Firebase Android サポート

提供: RAD Studio
移動先: 案内検索

Firebase Android サポート

RAD Studio 10.3 リリース 2 では、Firebase Android に対するサポートが含まれています。アプリケーションに対して Firebase Android を有効にするには、以下のステップに従います:

1. https://console.firebase.google.com/ に移動し、+ プロジェクトを追加 をクリックし、プロジェクトの名前(つまり、FirebaseApp)を入力します。

Screenshot 1.PNG

Screenshot 2.PNG

2. プロジェクトのために Google アナリティクスを設定するよう言われますが、このプロジェクトで Google アナリティクスを有効にする をオフにし、プロジェクトの作成をクリックします。

Screenshot 3.png

3. プロジェクトを作成したら、FMX Android アプリケーションを登録する必要があります。

左のナビゲーション ペインで、ギア アイコンをクリックし、プロジェクトの設定 を選択します。

Screenshot 4.png

4. Android アイコンをクリックして、Android アプリへの Firebase の追加 ページにアクセスします。

Screenshot 5.png

5. FireMonkey アプリケーションのデフォルトのパッケージ名は com.embarcadero.FirebaseApp ですが、自分のアプリケーションでは com.yourcompany.packagename に変更しなければなりません。

Screenshot 6.png

メモ: 今日の Google Play ストアで利用可能な既存のアプリケーションについては、新しい名前を割り当てる代わりに、ここでそのプロジェクトのパッケージ名を追加する必要があります。アプリケーションを登録 をクリックします。
注意: FMX プロジェクト名は、Firebase コンソールで登録されたプロジェクト名と一致しなければなりません。つまり、[プロジェクト オプション|アプリケーション|バージョン]からの情報でのパッケージ値は、Firebase コンソールでそのプロジェクトに対して登録されている"パッケージ名"の値と一致してなければなりません。開発者には、自分のドメインをベースとしたプロジェクト名を使用することが推奨されている一方、Delphi プロジェクトでのデフォルト名は com.embarcadero.$(ModuleName) である点に留意してください。

6. 設定ファイルをダウンロードします。

Screenshot 7.png

[次へ]をクリックして、現時点ではこのステップをスキップしてください。

7. IDE 内で、 [プロジェクト|オプション...|アプリケーション|サービス]と移動し、[インポート]をクリックして、設定ファイル(google-services.json)をインポートします。

Services.png

8. [プロジェクト|オプション|アプリケーション|資格リスト]と移動し、プッシュ通知の受信[True]に設定します。

EntitlementList.png

9. TMemo コントロールをフォームに追加し、Firebase イベント ログに表示されるようにします。メモ コントロールの名前を MemoLog に変更します。

10. オブジェクト インスペクタに移動し、Firebase プッシュ通知サービスと接続を OnCreate イベントを使用して初期化します。

ObjectInspector.png

 uses 
   FMX.PushNotification.Android;
  
 procedure TFormMain.FormCreate(Sender: TObject);
 var 
   PushService: TPushService;
   ServiceConnection: TPushServiceConnection;
   Notifications: TArray<TPushServiceNotification>;
 begin
   PushService :=
 TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
   ServiceConnection := TPushServiceConnection.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;
メモ: もし他のプラットフォームでこの同じアプリケーションをコンパイルする場合には、Android プッシュ通知のための uses 文は、IFDEF 内にある必要があります。

このサービス インスタンスは、デバイスを Firebase に登録し、一意のデバイス トークンを受け取るために使用されます。このトークンは、プッシュ メッセージ受信者のデバイス サービスとして使用されます。このコードをコンパイルするためには、フォーム クラスに 2 つのフィールドを追加する必要があります:

 FDeviceId: string;
 FDeviceToken: string;

11. 変更、つまりデバイス トークンを取得するために OnServiceConnectionChange を実装します。

 procedure TFormMain.OnServiceConnectionChange(Sender: TObject;
 PushChanges: TPushService.TChanges);
 var
   PushService: TPushService;
 begin
   PushService :=
 TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
   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;

12. Firebase からデバイス トークンを取得したら、OnReceiveNotificationEvent ​を実装して、プッシュ ペイロード データを受け取ります。

 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;
メモ: 通知センタで[通知]をタップしてアプリケーションを起動(コールドスタート)した場合、プッシュ通知のタイトルと本体は、DataObject にはありません。

13. FMX アプリケーションを Android デバイスに配置します。これでログにデバイス トークンが表示され、アプリケーションは自動的に FireBase に登録されます。プッシュ メッセージをデバイスに送信するには、Firebase トークンをメモからコピー、または代替手段として、adb logcat から取得することもできます。コード スニペットの Log.d メソッドを参照してください。

DeviceP1.png

14. https://console.firebase.google.com/ に行き、作成したプロジェクトを選択します。その後、サイドメニューから[拡大|Cloud Messaging|Send your first message]をクリックします。

15. タイトルとメッセージを入力して通知を作成し、[テスト メッセージの送信]をクリックします。

Screenshot 8.png

16. コピーしておいたデバイス トークンを入力し、[テスト]をクリックします。これにより、メッセージがテスト デバイスにプッシュされます。

Screenshot 9.png

注意: 新しい Firebase は、Google Play サービスの最新バージョンを使用しています。このため、MapView の古い実装はサポートされていません。
ヒント: [プロジェクト|オプション...|アプリケーション|アイコン]に移動し、カスタム プッシュ通知アイコンおよびアクセント カラーを指定します。

IconsP.png

関連項目

[アプリケーション]オプション

オブジェクト インスペクタ

[プロジェクト]メニュー

FireMonkey