トップへ(mam-mam.net/)

Firebase Cloud Messaging(FCM)のAndroidプッシュ通知を受け取る ~Delphiソースコード集

検索:

Firebase Cloud Messaging(FCM)のAndroidプッシュ通知を受け取る ~Delphiソースコード集

Firebaseでプロジェクトの作成

Firebaseにログインして「プロジェクトを作成」を押下します。

プロジェクト名を入力して「続行」を押下します。

プロジェクト用にGoogleアナリティクスを設定するを選択したまま「続行」を押下します。

「プロジェクトを作成」を押下します。

プロジェクト作成が完了したら「続行」を押下します。

Firebaseでプロジェクトにアプリの追加

「Androidパッケージ名」を入力して「アプリを登録」を押下します。 パッケージ名は、「ドメインの逆順」.「プロジェクト名」で入力します。 Androidの場合、ドメインのハイフンはアンダースコアに変えます。 mam-mam.net の場合は net.mam_mam になります。

「google-services.jsonをダウンロード」を押下します。
ダウンロードしたgoogle-services.jsonファイルは後でDelphiのプロジェクトに取り込みます。
ダウンロードが終わったら「次へ」を押下します。

「次へ」を押下します。

Delphiを起動してプロジェクトを作成

DelphiのIDEを起動し「ファイル」⇒「新規作成」⇒「マルチデバイスアプリケーション」を押下して、 「空のアプリケーション」を押下します。

右ペインのProject1.dprojプロジェクトのターゲット プラットフォームをAndroidに切り替え(ダブルクリック)します。
フォームにTMemoを1つドロップし、alignをTopに設定します。
「ファイル」⇒「すべて保存」を押下して、デフォルト(Project1.dproj、Unit1)で適当なフォルダに保存します。
(保存先フォルダ名に全角を使うとAndroidにインストールできなくなる場合があるので半角文字のみでフォルダを作成することをお勧めします。)

「プロジェクト」⇒「オプション」から「アプリケーション」⇒「資格リスト」を押下します。
プッシュ通知の受信にチェック(True)を入れます。

「アプリケーション」⇒「サービス」を押下します。
「インポート」ボタンを押下します。

上記のFirebaseの操作でダウンロードした「google-services.json」ファイルを選択して「開く」を押下します。

インポートされて、「Google アプリケーション ID」「デフォルトの送信者 ID」が設定されます。

「アプリケーション」⇒「バージョン情報」を押下します。
上記「Firebaseでプロジェクトにアプリの追加」で設定した「Androidパッケージ名」と同じ文字列を「package」に入力します。


ソースコードの入力

以下のソースコードを入力します。
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,
  System.PushNotification, System.Notification, FMX.PushNotification.Android;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { private 宣言 }
    procedure OnReceiveNotification(Sender: TObject;
      const ServiceNotification: TPushServiceNotification);
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.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;

   //■アプリ起動中でアクティブ時にPush通知が届いたら
   //  通知センターにPush通知が表示されずに
   //  OnReceiveNotificationが呼び出される
   //■アプリ起動中でアクティブではない時にPush通知が届いたら
   //  通知センターにPush通知が表示され、タップすると
   //  OnReceiveNotificationが呼び出される
   ServiceConnection.OnReceiveNotification := OnReceiveNotification;

   //■アプリが起動していない場合
   //  Push通知が届くと通知センターにPush通知が表示される。
   //  その通知センターのPush通知をタップした時にアプリが起動し以下が処理される
   Notifications := PushService.StartupNotifications;
   if Length(Notifications) > 0 then
   begin
       Memo1.Lines.Add('-----------------------------------------');
       Memo1.Lines.Add('Json = ' + Notifications[0].Json.ToString);
       Memo1.Lines.Add('-----------------------------------------');
   end;
end;

procedure TForm1.OnReceiveNotification(Sender: TObject;
  const ServiceNotification: TPushServiceNotification);
begin
  //届いたPush通知をMemoに出力
  Memo1.Lines.Add('-----------------------------------------');
  Memo1.Lines.Add('Json = ' + ServiceNotification.Json.ToString);
  Memo1.Lines.Add('-----------------------------------------');
end;

end.

ソースコードの入力が終わったら、デバッガを使わずに実行(Shift+Ctrl+F9)ボタンを押下して、実機に転送して実行します。


Firebaseからプッシュ通知を送信する

Firebaseの左のメニューの下のほう、又は一番下のリンクから「Cloud Messaging」を押下します。

「Send your first message」を押下します。
(既に送信したことがある場合は「新しい通知」ボタンを押下します)

通知のタイトル、通知テキストを入力して「次へ」を押下します。

ターゲット アプリを選択します。以下の場合は「net.mam_mam.Project1」を選択しています。
「次へ」を押下します。
(他にオプションを設定しない場合は「確認」を押下しても構いません)

スケジュールを設定します。デフォルトの「現在」のまま「次へ」を押下します。
(他にオプションを設定しない場合は「確認」を押下しても構いません)

コンバージョン イベントを設定します。デフォルトのまま「次へ」を押下します。
(他にオプションを設定しない場合は「確認」を押下しても構いません)

その他のオプションを設定します。
今回はカスタムデータを設定します。設定したら「確認」ボタンを押下します。

「公開」ボタンを押下します。(プッシュ通知が送信されます。)


実機での確認

実機にJsonデータが届きます。カスタムデータも届いています。