Hallo zusammen,
ich möchte gerne Push Nachrichten auf Smartphones mit Google Firebase für IOs und Android senden.
zum registrieren bei Google benutze ich nachstehenden Code.
Delphi-Quellcode:
procedure TPush.InitPushNotifications; // by google registrieren
var
PushService: TPushService;
ServiceConnection: TPushServiceConnection;
Notifications: TArray<TPushServiceNotification>;
begin
{$IFDEF ANDROID}
PushService := TPushServiceManager.Instance.GetServiceByName
(TPushService.TServiceNames.FCM); // <- PushService ist nil nach dem Aufruf
{$ENDIF}
{$IFDEF IOS}
PushService := TPushServiceManager.Instance.GetServiceByName
(TPushService.TServiceNames.APS); // <- PushService ist nil nach dem Aufruf
{$ENDIF}
ServiceConnection := TPushServiceConnection.Create(PushService);
// <- wird mit nil pointer erstellt, beim active setzen greift er drauf zu
ServiceConnection.OnChange := OnServiceConnectionChange;
ServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
ServiceConnection.Active := True;
FDeviceId := PushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceId];
Memo.Lines.Add('DeviceID: ' + FDeviceId);
Edit2.text := FDeviceId;
Memo.Lines.Add('Ready to receive!');
FDeviceToken := PushService.DeviceTokenValue [TPushService.TDeviceTokenNames.DeviceToken];
Memo.Lines.Add('Firebase Token: ' + FDeviceToken);
// Checks notification on startup, if application was launched from cold start
// by tapping on Notification in Notification Center
Notifications := PushService.StartupNotifications;
if Length(Notifications) > 0 then
begin
Memo.Lines.Add('-----------------------------------------');
Memo.Lines.Add('DataKey = ' + Notifications[0].DataKey);
Memo.Lines.Add('Json = ' + Notifications[0].JSON.ToString);
Memo.Lines.Add('DataObject = ' + Notifications[0].DataObject.ToString);
Memo.Lines.Add('-----------------------------------------');
end;
end;
Wenn ich die Registrierung über Android mache bekomme ich ein Token mit 152 Zeichen zurück,
mit einer IOs Anmeldung ist das Token nur 64 Zeichen lang.
Die Push-Nachricht funktioniert nur auf einem Android Gerät.
Hat jemand eine Idee wo ich den Fehler suchen muss?
Danke schonmal
Gregor