• 0
Антон Емельянов

FPushService.DeviceTokenValue = nil Что делать?

Вопросы

Приложение не даёт DeviceToken...  ,  (DeviceID есть)
FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

Тест пример реализован по статье нашего замечательного модератора
http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

Используется:
Компиляция SDK Android 5.1
Среда-разработки Delphi XE 10.2 

Пожалуйста запустите проект на своей версии Delphi..
Посмотрите будет  сгенерирован ТОКЕН или нет.. 
в случае удачи ,  напишите какая у вас версия Дельфи..

Исходник-проекта:  https://drive.google.com/open?id=1mCPvYYd0tXBALt-J_ymVuzChj_TtztC0
Только APK: https://drive.google.com/open?id=1x8q4RyVylpGOMjcQYjlvFxFBSQaYs7NL 


Помогите люди добрые :unsure:
За помощь и консультацию отблагодарю..
 

где токен.png

Изменено пользователем Антон Емельянов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 ответа на этот вопрос

  • 0
Только что, Антон Емельянов сказал:

Так понял. А какой apikey должен быть ?  Уточни пожалуйста - из моих скриншотов

Он вообще не из Firebase Он из

image.png.3b4ddf484bad9970dd5c16259156f131.png

Также создаешь там проект, подключаешь API нужные. В твоем случае GCM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

да я вчера делал акаунт.. Это оно?
Здесь в  библиотеке  нет  GCM   .. поиск не даёт результата

234234.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, Антон Емельянов сказал:

да я вчера делал акаунт.. Это оно?
Здесь в  библиотеке  нет  GCM   .. поиск не даёт результата

234234.png

image.thumb.png.ece574d4ef7a3215c69a73e5f751fb38.pngа это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ключ создал. немного не понял про ограничения.. нужно ставить или нет.. 
Если да. то где нужно выполнить эту команду.. в какой консоли. (=)) тёмный лес для меня..)

02.png

01.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В правом верхнем углу нажал на Три точки.. -> Настройки. . ТАм есть такие данные.. Они нам нужны?
 

Clip2net_180227123618.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 минут назад, Антон Емельянов сказал:

Ключ создал. немного не понял про ограничения.. нужно ставить или нет.. 
Если да. то где нужно выполнить эту команду.. в какой консоли. (=)) тёмный лес для меня..)

02.png

01.png

выбери без ограничений пока. и ключ забирай вставляй в проект в ембу

image.png.02bd944ee210c2c71be4497731b61c3c.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

поставил тут all conf.. незнаю влияет это или нет..
но результата пока нет

all platform.png

Изменено пользователем Антон Емельянов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Что то тут вы сами себя запутали. Все просто (через жопу конечно с появлением Firebase, но ничего не поделаешь, у американцев вслед за датой-задом-наперед и имперской системой исчисления, все остальное тоже немного наперекосяк) :

1. Идете в https://console.firebase.google.com/ , нажимаете "Добавить проект", произвольное, понятное вам название проекта, страна. Нажимаем сохранить.

2. Попадаем на https://console.firebase.google.com/project/test005-e3e15/overview, красочные квадратики и разные перделки-свистелки, вверху страницы нажимаем "Добавьте Fiebase в свое приложение на Андроид". В открывшемся окне вводите Название пакета (В предыдущих сообщения вам показывали где оно), остальное не надо, нажимайте сохранить. Вам предложат скачать файл google-services.json, он вам нафик не нужен, это только для андроид студии, Эмбаркадера про это еще дочитала документацию.

3. Далее нужно найти на странице малюсенькое колесико, нажать на него, Настройки, вверху Cloud Messaging, вот на этой странице есть все что вам нужно. Скриншот прилагаю.

Ключ сервера - для отправки пушей с вашего сервера.

Идентификатор отправителя - для получения Токенов в вашем андроид приложении.

Всякий бред в консоли разработчика (типа Подключения идентификатора отправителя ) игнорируйте, это индусские аутсорсеры пишут, с ними потеряна связь несколько лет назад из за наводнения в Индийском океане, но коммитить код они не перестали).

Вот и все.

P.S. Имейте ввиду, что пушсообщения могут начать приходить не сразу, у них притормаживает слегка и после добавления проекта часов 10-20 может ничего не работать. Токены начинаю выдаваться сразу.

 

Снимок.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Так вот какраз проблема в том что не выдаются токены..
всё сделано по вашей инструкции.. и по инструкции модератора..
но не выдаются токены..

 

apikey.png

Screenshot_2018-02-27-12-43-10.png

clip.png

Изменено пользователем Антон Емельянов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 минуту назад, Антон Емельянов сказал:

Так вот какраз проблема в том что не выдаются токены

Clip2net_180227130005.png

Из этого скрина вам нужен только Пункт 4. Пункты 2 и 3 никак не повлияют. Пункт 3 испольнять не вздумайте, не зачем ваш СЕРВЕРНЫЙ ключ светить в приложении. Это из другой оперы ключ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Просто пуш уведомления это очень нужна функция и она должна работать у всех и всегда... 
В чем же может быть причина то...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
39 минут назад, FREEFAR сказал:

выбери без ограничений пока. и ключ забирай вставляй в проект в ембу

image.png.02bd944ee210c2c71be4497731b61c3c.png

Так пробовал - токенов всёравно нет =(((((((((((((
вводил это в  параметры проекта .результата нет.
уже запарился

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Какбы суть в том что не выдаются токены..
Ктонибудь знает последовательность действий какие делает программа для получения токена..??
можете написать?!.. Так как  ДевайсАйди   выдаётся нормально..

Screenshot_2018-02-27-12-43-10.png

Изменено пользователем Антон Емельянов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 минут назад, Антон Емельянов сказал:

то есть ключ сервера вообще ненужно пихать в apikey ?

Это вообще разные вещи, туда ничего пихать не нужно вообще.  Но если очень хочется, то это ключь ПРИЛОЖЕНИЯ из GooglePlayConsole

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Скачал ваше тестовое приложение.

Во первых в манифесте добавьте разрешение на получение

<%uses-permission%>
    <!-- FCM push notifications permission -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

Во вторых чтобы не было каши из кода, просто используйте готовый модуль для пуш оповещений, я его публиковал уже здесь, искать лень, закину еще разок.

 

Использование элементарное:

1. В Uses добавьте DW.PushClient и возможно понадобиться System.PushNotification (а может и нет).

FPushClient : TPushClient;

Код:

procedure TFormMain.InitPush;
begin
{$IFDEF ANDROID}
  if FSetting.GUID.IsEmpty then
    Exit;
  if Not Assigned(FPushClient) then
    FPushClient := TPushClient.Create
  else
    FPushClient.Active:=False;
  FPushClient.GCMAppID := ConstGCMAppID;
  FPushClient.ServerKey := '';
  FPushClient.BundleID := '';
  FPushClient.UseSandbox := Debug; // Change this to False for production use!
  FPushClient.OnChange := PushClientChangeHandler;
  FPushClient.OnReceiveNotification := PushClientReceiveNotificationHandler;
  try
    FPushClient.Active:=True;
  except
  end;
{$ENDIF ANDROID}
end;

А PushClientChangeHandler вот:

procedure TFormMain.PushClientChangeHandler(Sender: TObject; AChange: TPushService.TChanges);
begin
  if TPushService.TChange.DeviceToken in AChange then
  begin
    HDevicePushParams.DeviceID:=FPushClient.DeviceID;
    HDevicePushParams.DeviceToken:=FPushClient.DeviceToken;
    GetHTTP(MetodMinerProRegisterFCM);
  end;
end;

GetHTTP(MetodMinerProRegisterFCM); - это отправка токена на свой сервер, замените на свое. К примеру в Memo для начала.

PushClient.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да, забыл добавть, в константе ConstGCMAppID должен лежать ваш идентификатор отправителя (только циферки), к примеру 904067404541

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Эм.. ничего непонятно :unsure:.. тут куски кода..
1. что такое  "MetodMinerProRegisterFCM" в  GetHTTP(MetodMinerProRegisterFCM)
2. где процедура PushClientReceiveNotificationHandler
3. не определяется   HDevicePushParams в  HDevicePushParams.DeviceID:=FPushClient.DeviceID;


Пришлите  рабочий  архив с проектом - простая форма  и кнопка получить токен...  будем сильно благодарны

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
46 минут назад, Антон Емельянов сказал:

Эм.. ничего непонятно :unsure:.. тут куски кода..
1. что такое  "MetodMinerProRegisterFCM" в  GetHTTP(MetodMinerProRegisterFCM)
2. где процедура PushClientReceiveNotificationHandler
3. не определяется   HDevicePushParams в  HDevicePushParams.DeviceID:=FPushClient.DeviceID;


Пришлите  рабочий  архив с проектом - простая форма  и кнопка получить токен...  будем сильно благодарны

Вообще то я приложил к сообщению архив. Если бы удосужились его скачать и открыть, то обнаружили кроме готовой библиотеки для работы с пушами еще и демо-проект. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
    • От AliZairov
      Привет. Я сделал новую версию YouTubeApi компоненты. Поддерживаемые VCL & FMX + Mobile.
      Никаких официальных YouTube Api компоненты. Только данные с парсинг. Пример доступен в архиве.
       
      Новый
      ===
      v1.4 - 25/02/2018
        + Устранение проблем
      YouTubeApiDelphi
    • От gresaggr
      Добрый день.
      Как под FMX в ListView сделать подчеркивание Detail в рантайме?
      Пытался делать так:
      LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
      но не срабатывает.
      P.S. Возможно это применить не ко всем строкам, а только к некоторым?
    • От Виталий Иванов
      Ошибка при запуске программы на отладку:
       
      "
      Can't open socket: Permission denied 
      Exiting
      .
      "
       
      кто знает как побороть ? 
       
      Отладку запускаю на OnePlus3 с Android 8.0.0, драйвера Google USB переустанавливал. 

    • От dim
      Есть код который работает при смещении карты и получив координаты центра пытаюсь получить адрес по ним.
      procedure TMasterDetailForm.MapView3CameraChanged(Sender: TObject); var myCoordinat: TLocationCoord2D; begin inherited; myCoordinat.Create(MapView3.Location.Latitude,MapView3.Location.longitude); if (int(myCoordinat.Latitude)<>0) then begin //проверяю, что координаты определены if not Assigned(fGeocoder) then begin if Assigned(fGeocoder.Current) then fGeocoder := TGeocoder.Current.Create; if Assigned(fGeocoder) then fGeocoder.OnGeocodeReverse := OnGeocodeReverseEventStart; end; if Assigned(fGeocoder) and not fGeocoder.Geocoding then fGeocoder.GeocodeReverse(myCoordinat); end end; все работало до очередного обновления, а сейчас ругается "java.io.IOException: Service not Available" на fGeocoder.GeocodeReverse(myCoordinat);
      подскажите куда копать
    • От striker
      Всем привет!
      Нужен совет.
      Есть Grid, в нем расписание дня.
      В БД каждая строка это отдельная запись.
      Нужно как-то визуально сделать подобие объединения ячеек в Excel.
      Т.е. нужно занять расписание на 2 часа.
      При этом функционал по событиям для строки "второго часа" должен быть недоступен.
      Может хотя бы границу стирать, т.е. оставлять значение в верхней ячейки, а нижнюю просто не отображать.
      Как это лучше сделать?
      FMX, Windows, Delphi XE6, MySQL
       

    • От x11
      Нет ли у FMX готовой функции для открытия веб-ссылок из приложения?
      А то приходится городить огород с лисапетами и кучей IFDEF.
      В итоге что у меня получилось.
      Для удобства разнес все по разным модулям.
      Модуль для Windiws
      unit uUtilsWindows; interface {$IFDEF MSWINDOWS} uses ShellApi, Variants, Windows, FMX.Types, FMX.Platform.Win; procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); {$ENDIF} implementation {$IFDEF MSWINDOWS} procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); begin ShellExecute(FmxHandleToHWND(WindowHandle), 'open', PChar(VarToStr(sURL)), nil, nil, SW_NORMAL); end; {$ENDIF} end.  
      Модуль для Android
      unit uUtilsAndroid; interface {$IFDEF ANDROID} uses FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, AndroidApi.Helpers; procedure AndroidOpenUrl(const sUrl: string); {$ENDIF} implementation {$IFDEF ANDROID} procedure AndroidOpenUrl(const sUrl: string); Var Uri: Jnet_Uri; OpenLinkIntent: JIntent; begin Uri := StrToJURI(sUrl); OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);// будем что-то смотреть OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);// смотреть в браузере OpenLinkIntent.setData(Uri);// смотреть эту ссылку SharedActivity.startActivity(OpenLinkIntent);// открываем end; {$ENDIF} end.  
      теперь в основной форме:
      uses ..., ...{$IFDEF ANDROID}, vkbdhelper, uUtilsAndroid{$ENDIF} {$IFDEF MSWINDOWS}, uUtilsWindows {$ENDIF}; ... ... ... procedure TfmEditObject.actOpenUrlExecute(Sender: TObject); begin {$IFDEF ANDROID}AndroidOpenUrl(edMapsCoordUrl.Text);{$ENDIF} {$IFDEF MSWINDOWS}WindowsOpenUrl(edMapsCoordUrl.Text, Self.Handle);{$ENDIF} end;  
      А если добавлять ещё одну платформу, то ещё один модуль понадобится.
      Может есть более правильный вариант, так сказать, дизайна исходного кода?
       
    • От SerhioUser
      Добрый день.
      Как в FMX при перерисовке объекта включить/отключить привязку к вертикальной синхронизации (v-sync) развертки экрана? Есть ли такая возможность в FMX? (В OpenGL и DirectX - есть)
      Например если делаем видео-плеер, то чтобы не было артефактов синхронизация нужна, а если хотим узнать реальный fps - синхронизацию выключаем.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу