Перейти к содержанию
Fire Monkey от А до Я

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

Пользователи
  • Постов

    35
  • Зарегистрирован

  • Посещение

Весь контент Антон Емельянов

  1. Сделал новый проект . в нем создал новое приложение. в программе прописал новый id.. результат тотже покачто.
  2. пробовал менять ID на Ключ сервера. Тоже не работает.. Я там приложил весь архив с проектом.. в теме.. там в все настройки .. можешь скачать - открыть, запустить? может проблема с sdk или ещё что. или я чтото упускаю =(
  3. Эм. Это из firebase... id отправителя.. или тут должен быть -длииииный id/вот что у меня есть
  4. Я пробовал на разных устройствах. результат одинаковый.. По-мо-ги-те
  5. А нет. пардон.. процедура OnServiceConnectionChange выполняется.. но условие которое в ней, нет.. для теста . убрал условие.. теперь так выводится procedure TForm1.OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); begin //if (TPushService.TChange.DeviceToken in AChange) and // Assigned(FPushServiceConnection) then //begin FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; memo1.Lines.Add('FDeviceID2: '+FDeviceID); memo1.Lines.Add('FDeviceToken2: '+FDeviceToken); // тут отправляем в хранилище токенов (на сервер с БД например) //end; end;
  6. Я добавил записи что ты просил.. Я не очень понял в какой момент вызывается OnServiceConnectionChange.. для Анроид приложения.Вот полный код.. И по его исполнению.. выводится только первый блок в мемо1. А до OnServiceConnectionChange не доходит..Подправьте пожалуйста код -- так как он должен быть в рабочем состоянии... Заранее благодарю!!!!!!! unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,System.PushNotification, FMX.PushNotification.Android,system.JSON; type TForm1 = class(TForm) ToolBar1: TToolBar; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; Memo1: TMemo; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } FDeviceID: string; FDeviceToken: string; FPushService: TPushService; FPushServiceConnection: TPushServiceConnection; public { Public declarations } procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); procedure OnServiceConnectionChange(Sender: TObject;AChange: TPushService.TChanges); procedure PushServiceRegister; end; const FAndroidServerKey = '687234578278'; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormShow(Sender: TObject); begin PushServiceRegister(); end; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); const FCMSignature = 'gcm.notification.body'; GCMSignature = 'message'; APNsSignature = 'alert'; var aText: string; aObj: TJSONValue; begin // это событие срабатывает при открытом приложении {$IFDEF ANDROID} aObj := ANotification.DataObject.GetValue(GCMSignature); if aObj <> nil then aText := aObj.Value else aText := ANotification.DataObject.GetValue(FCMSignature).Value; {$ELSE} aObj := ANotification.DataObject.GetValue(APNsSignature); if aObj <> nil then aText := aObj.Value; {$ENDIF} ShowMessage(aText); end; procedure TForm1.OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); begin if (TPushService.TChange.DeviceToken in AChange) and Assigned(FPushServiceConnection) then begin FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; memo1.Lines.Add('FDeviceID2: '+FDeviceID); memo1.Lines.Add('FDeviceToken2: '+FDeviceToken); // тут отправляем в хранилище токенов (на сервер с БД например) end; end; procedure TForm1.PushServiceRegister; begin FPushService := nil; FPushServiceConnection := nil; {$IF defined(ANDROID)} FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); FPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := FAndroidServerKey; {$ENDIF} {$IF defined(IOS) AND defined(CPUARM)} FPushService := TPushServiceManager.Instance.GetServiceByName (TPushService.TServiceNames.APS); {$ENDIF} if Assigned(FPushService) then begin FPushServiceConnection := TPushServiceConnection.Create(FPushService); FPushServiceConnection.OnChange := OnServiceConnectionChange; FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; FPushServiceConnection.Active := true; FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; // тут отправляем в хранилище токенов (на сервер с БД например) memo1.Lines.Add('FDeviceID: '+FDeviceID); memo1.Lines.Add('FDeviceToken: '+FDeviceToken); end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form1.Close; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin //ghj end; end.
  7. Эм.. так и сделано. Я прикрепил скриншот к первому сообщению.. Там видно, что токен не выводится.. дублирую ссылкой скриншот: http://fire-monkey.ru/uploads/monthly_2018_02/5a944cc210b64_.thumb.png.6486139139dc7ad8058be958daf0854a.png
  8. Приложение не даёт 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 Помогите люди добрые За помощь и консультацию отблагодарю..
×
×
  • Создать...