delphi 如何在 Android 上获取 Firebase 令牌  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 如何在 Android 上获取 Firebase 令牌


通过我们的应用程序向用户发送推送通知几乎是必不可少的。


无论是新的更新,提醒您某些信息,还是出于无数其他原因,推送通知都很重要。


对于已经知道 Google API 的人和不知道的人,需要从 Firebase API 获取 Token 才能识别用户并发送通知。


对于之前已经编写过推送通知的人来说,你会知道在Delphi 10.4 中,它发生了一些变化,我们必须调整代码才能获得 Token。


从 Firebase 获取令牌

值得教授如何在 Firebase 网络上创建项目,因为它非常简单。


您所要做的就是注册、创建项目并注册我们的应用程序以下载名为google-services.json的文件。


在这个文件中,我们将拥有我们项目的所有配置,以便能够对其进行配置。


在我们的应用程序中配置 Firebase

为了在我们的应用程序中配置Firebase,我们进入菜单Project -> Options -> Application -> Services,然后在 Target 中选择我们的 Android 版本(32 位或 64 位)。


单击导入按钮并选择我们之前下载的google-services.json文件。


配置字段将自动填充。如果我们的 App 要编译为 32 位和 64 位,我们必须在两个版本中执行相同的步骤。

Proxy-Server-1.png

配置 Firebase

导入 Firebase 配置后,我们必须激活权利列表中的接收推送通知选项。

Proxy-Server-1.png


配置 Firebase

作为下一步,我们将进行编码。我们创建主窗体的OnCreate事件(或在我们想要接收令牌的任何其他事件中),我们将在其中调用以下过程:


var

  FDeviceId: string;

  FDeviceToken: string;

 

...

 

uses

   FMX.PushNotification.Android;

 

...

 

procedure TFormMain.ShowToken;

var

  PushService: TPushService;

  ServiceConnection: TPushServiceConnection;

  Notifications: TArray<TPushServiceNotification>;

begin

  PushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM);

  ServiceConnection := PushServiceConnection.Create(PushService);

  ServiceConnection.Active := True;

  ServiceConnection.OnChange := OnServiceConnectionChange;

  ServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;

  

  FDeviceId := PushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceId];

  MemoLog.Lines.Add('DeviceID: ' + FDeviceId);

  MemoLog.Lines.Add('Ready to receive!');

  

  // Checks notification on startup, if application was launched fromcold start

  // by tapping on Notification in Notification Center

  Notifications := PushService.StartupNotifications;

  if Length(Notifications) > 0 then

  begin

      MemoLog.Lines.Add('-----------------------------------------');

      MemoLog.Lines.Add('DataKey = ' + Notifications[0].DataKey);

      MemoLog.Lines.Add('Json = ' + Notifications[0].Json.ToString);

      MemoLog.Lines.Add('DataObject = ' + Notifications[0].DataObject.ToString);

      MemoLog.Lines.Add('-----------------------------------------');

  end;

end;

正如我们在前面的过程中看到的,实例化了两个事件:


ServiceConnection.OnChange := OnServiceConnectionChange;

ServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;

 在更改设备令牌时运行的OnServiceConnectionChange实现 。


procedure OnServiceConnectionChange(Sender: TObject;

PushChanges: TPushService.TChanges);

var

  PushService: TPushService;

begin

  PushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM);

  if TPushService.TChange.DeviceToken in PushChanges then

  begin

    FDeviceToken := PushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

    MemoLog.Lines.Add('Firebase Token: ' + FDeviceToken);

    Log.d('Firebase device token: token=' + FDeviceToken);

  end;

  if (TPushService.TChange.Status in PushChanges) and (PushService.Status = TPushService.TStatus.StartupError) then

    MemoLog.Lines.Add('Error: ' + PushService.StartupError);

end;


最后执行OnReceiveNotificationEvent事件   来接收数据:


procedure OnReceiveNotificationEvent(Sender: TObject;

const ServiceNotification: TPushServiceNotification);

var

  MessageText: string;

begin

  MemoLog.Lines.Add('-----------------------------------------');

  MemoLog.Lines.Add('DataKey = ' + ServiceNotification.DataKey);

  MemoLog.Lines.Add('Json = ' + ServiceNotification.Json.ToString);

  MemoLog.Lines.Add('DataObject = ' +

 ServiceNotification.DataObject.ToString);

  MemoLog.Lines.Add('---------------------------------------');

end;

为了让这个示例工作,我们必须在我们的表单中拥有一个名为MemoLog的TMemo,其中将显示设备 ID 和 Firebase 令牌的数据。



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.037707090377808 seconds