Перейти к содержанию
Fire Monkey от А до Я
  • 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

Изменено пользователем Антон Емельянов
Ссылка на комментарий
  • Ответы 52
  • Создана
  • Последний ответ

Лучшие авторы в вопросе

Рекомендуемые сообщения

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

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

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

image.png.3b4ddf484bad9970dd5c16259156f131.png

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

Ссылка на комментарий
  • 0

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

02.png

01.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
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;


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

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...