Firebase Android サポート
Firebase Android サポート
RAD Studio 10.3 リリース 2 では、Firebase Android に対するサポートが含まれています。アプリケーションに対して Firebase Android を有効にするには、以下のステップに従います:
1. https://console.firebase.google.com/ に移動し、+ プロジェクトを追加 をクリックし、プロジェクトの名前(つまり、FirebaseApp)を入力します。
2. プロジェクトのために Google アナリティクスを設定するよう言われますが、このプロジェクトで Google アナリティクスを有効にする をオフにし、プロジェクトの作成をクリックします。
3. プロジェクトを作成したら、FMX Android アプリケーションを登録する必要があります。
左のナビゲーション ペインで、ギア アイコンをクリックし、プロジェクトの設定 を選択します。
4. Android アイコンをクリックして、Android アプリへの Firebase の追加 ページにアクセスします。
5. FireMonkey アプリケーションのデフォルトのパッケージ名は com.embarcadero.FirebaseApp ですが、自分のアプリケーションでは com.yourcompany.packagename に変更しなければなりません。
6. 設定ファイルをダウンロードします。
[次へ]をクリックして、現時点ではこのステップをスキップしてください。
7. IDE 内で、 [プロジェクト|オプション...|アプリケーション|サービス]と移動し、[インポート]をクリックして、設定ファイル(google-services.json)をインポートします。
8. [プロジェクト|オプション|アプリケーション|資格リスト]と移動し、プッシュ通知の受信を[True]に設定します。
9. TMemo コントロールをフォームに追加し、Firebase イベント ログに表示されるようにします。メモ コントロールの名前を MemoLog に変更します。
10. オブジェクト インスペクタに移動し、Firebase プッシュ通知サービスと接続を OnCreate イベントを使用して初期化します。
uses FMX.PushNotification.Android; procedure TFormMain.FormCreate(Sender: TObject); var PushService: TPushService; ServiceConnection: TPushServiceConnection; Notifications: TArray<TPushServiceNotification>; begin PushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM); 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;
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.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;
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;
13. FMX アプリケーションを Android デバイスに配置します。これでログにデバイス トークンが表示され、アプリケーションは自動的に FireBase に登録されます。プッシュ メッセージをデバイスに送信するには、Firebase トークンをメモからコピー、または代替手段として、adb logcat から取得することもできます。コード スニペットの Log.d メソッドを参照してください。
14. https://console.firebase.google.com/ に行き、作成したプロジェクトを選択します。その後、サイドメニューから[拡大|Cloud Messaging|Send your first message]をクリックします。
15. タイトルとメッセージを入力して通知を作成し、[テスト メッセージの送信]をクリックします。
16. コピーしておいたデバイス トークンを入力し、[テスト]をクリックします。これにより、メッセージがテスト デバイスにプッシュされます。