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 に変更しなければなりません。
今日の Google Play ストアで利用可能な既存のアプリケーションについては、新しい名前を割り当てる代わりに、ここでそのプロジェクトのパッケージ名を追加する必要があります。アプリケーションを登録 をクリックします。
FMX プロジェクト名は、Firebase コンソールで登録されたプロジェクト名と一致しなければなりません。つまり、[プロジェクト オプション|アプリケーション|バージョン]からの情報でのパッケージ値は、Firebase コンソールでそのプロジェクトに対して登録されている"パッケージ名"の値と一致してなければなりません。開発者には、自分のドメインをベースとしたプロジェクト名を使用することが推奨されている一方、Delphi プロジェクトでのデフォルト名は com.embarcadero.$(ModuleName) である点に留意してください。
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;
もし他のプラットフォームでこの同じアプリケーションをコンパイルする場合には、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.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;
通知センタで[通知]をタップしてアプリケーションを起動(コールドスタート)した場合、プッシュ通知のタイトルと本体は、DataObject にはありません。
13. FMX アプリケーションを Android デバイスに配置します。これでログにデバイス トークンが表示され、アプリケーションは自動的に FireBase に登録されます。プッシュ メッセージをデバイスに送信するには、Firebase トークンをメモからコピー、または代替手段として、adb logcat から取得することもできます。コード スニペットの Log.d メソッドを参照してください。
14. https://console.firebase.google.com/ に行き、作成したプロジェクトを選択します。その後、サイドメニューから[拡大|Cloud Messaging|Send your first message]をクリックします。
15. タイトルとメッセージを入力して通知を作成し、[テスト メッセージの送信]をクリックします。
16. コピーしておいたデバイス トークンを入力し、[テスト]をクリックします。これにより、メッセージがテスト デバイスにプッシュされます。
新しい Firebase は、Google Play サービスの最新バージョンを使用しています。このため、MapView の古い実装はサポートされていません。
[プロジェクト|オプション...|アプリケーション|アイコン]に移動し、カスタム プッシュ通知アイコンおよびアクセント カラーを指定します。