マルチデバイス アプリケーションでのプッシュ通知の受信
モバイル チュートリアル:リモート通知を使用する(iOS および Android) への移動
目次
Android と iOS のどちらにも使用できる要素を使用して、プッシュ通知を受信する基本のアプリケーションを作成し、それから特定のプラットフォームに特有のコードを追加します。
- メモ: このトピックの実装は REST BAAS フレームワーク上に作成します。そのため、RAD Studio で iOS または Android アプリケーションを作成する場合、使用できるサービス プロバイダは以下のいずれかです。
- Kinvey
- Parse
- EMS
プッシュ通知を受信するアプリケーションを作成する前に、必ず以下の 2 つの必須手順を実施してください。
- メッセージング サービスのセットアップ
- プロバイダに応じて以下のいずれか
ユーザー インターフェイスの設計とセットアップ
- 次のいずれかを選択してマルチデバイス アプリケーションを作成します。
- [ファイル|新規作成|マルチデバイス アプリケーション - Delphi|空のアプリケーション]
- [ファイル|新規作成|マルチデバイス アプリケーション - C++Builder|空のアプリケーション]
- TCheckBox コンポーネントをフォーム上にドロップします。
- [オブジェクト インスペクタ]で、CheckBox のプロパティを次のように設定します。
- TMemo コンポーネントをフォームに追加し、その Align プロパティを Client に設定します。
- TPushEvents オブジェクトをドロップします。
- AutoActivate を False に設定します。
- [LiveBinding デザイナ]で、PushEvents の Active から CheckBox の IsChecked へのリンクを追加します。こうすると、CheckBox コンポーネントをオンにしたときに、PushEvents の Active プロパティが True に設定されます。
- 使用するサービス プロバイダに合わせて、以下を追加します。
- Parse の場合: TParseProvider
- Kinvey の場合: TKinveyProvider
- EMS の場合: TEMSProvider
- TKinveyProvider を使用する場合(iOS または Android)
[オブジェクト インスペクタ]で、KinveyProvider のプロパティを次のように設定します。
- Android Push ノードを展開し、Google への登録の[プロジェクト番号]を GCMAppID にコピーします。
- AppKey、AppSecret、MasterSecret を、「Kinvey でプロジェクトをセットアップする」の[API Keys]の値に設定します。
- UserName および Password を、「Kinvey でユーザーを追加する」で定義した値に設定します。
- TParseProvider を使用する場合(iOS または Android)
[オブジェクト インスペクタ]で、ParseProvider のプロパティを次のように設定します。
- ApplicationID、MasterKey、RestApiKey を、「Parse でのプロジェクトの作成」の[App keys]の値に設定します。
- TEMSProvider の使用(iOS または Android)
[オブジェクト インスペクタ]で、EMSProvider のプロパティを次のように設定します。
- Android Push ノードを展開し、Google への登録の[プロジェクト番号]を GCMAppID にコピーします。
- ApplicationId、AppSecret、MasterSecret を、「EMS サーバーを設定する」の[API Keys]の値に設定します。
イベント ハンドラの作成
-
フォームで PushEvents1 を選択し、オブジェクト インスペクタに移動します。
- Provider プロパティが、使用するプロバイダに合わせて KinveyProvider1、ParseProvider1、または EMSProvider1 に設定されているかを確認します。
- [イベント]タブを開き、値のフィールドをダブルクリックして各イベントのイベント ハンドラを作成します。
- F12 キーを押して[コード]タブに切り替えます。
- イベント ハンドラを次のように定義します。
- Delphi の場合:
implementation {$R *.fmx} procedure TForm1.PushEvents1DeviceRegistered(Sender: TObject); begin Memo1.Lines.Add('Device Registered'); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1DeviceTokenReceived(Sender: TObject); begin Memo1.Lines.Add('Device Token Received'); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1DeviceTokenRequestFailed(Sender: TObject; const AErrorMessage: string); begin Memo1.Lines.Add('Device Token Request Failed'); Memo1.Lines.Add(AErrorMessage); Memo1.Lines.Add(''); end; procedure TForm1.PushEvents1PushReceived(Sender: TObject; const AData: TPushData); begin Memo1.Lines.Add('Device push received'); Memo1.Lines.Add(AData.Message); Memo1.Lines.Add(''); end; end.
- C++ の場合:
//-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceRegistered(TObject *Sender) { Memo1->Lines->Add("Device Registered"); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceTokenReceived(TObject *Sender) { Memo1->Lines->Add("Device Token Received"); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1DeviceTokenRequestFailed(TObject *Sender, const UnicodeString AErrorMessage) { Memo1->Lines->Add("Device Token Request Failed"); Memo1->Lines->Add(AErrorMessage); Memo1->Lines->Add(""); } //-------------------------------------------------------------------------- void __fastcall TForm1::PushEvents1PushReceived(TObject *Sender, TPushData * const AData) { Memo1->Lines->Add("Push Received"); Memo1->Lines->Add(AData->Message); Memo1->Lines->Add(""); } //--------------------------------------------------------------------------
Android の設定
- メモ: お使いの Android デバイスが GCM に対応しているかどうかは、GCM の概要を参照して確認してください。
プロジェクトの設定
アプリケーションでリモート通知を受信できるようにするには:
- [プロジェクト マネージャ]でプロジェクトを右クリックします。
- [プロジェクト|オプション...|資格リスト]を選択します。
- [プッシュ通知の受信]の値を
True
に設定します。
メモ: リモート通知が届いたときにアプリケーションが動作していなくても通知を受信できるようにするには、サービス クラスを登録する必要があります。この Java サービス クラスでは、Android デバイスの通知センターにエントリを作成します。通知センターに項目を作成する必要がない、または作成したくない場合には、この手順を省略してもかまいません。
AndroidManifest.template.xml をカスタマイズして、プロジェクトの AndroidManifest.xml にエントリを追加する必要があります。プロジェクトの AndroidManifest.template.xml ファイルで、以下のタグを検索します。
<%receivers%>
その下に、次のコードを追加します。
<service android:name="com.embarcadero.gcm.notifications.GCMIntentService" />
iOS の設定
プロジェクトの設定
- [プロジェクト マネージャ]でプロジェクトを右クリックします。
- [プロジェクト|オプション...|バージョン情報]を選択し、CFBundleIdentifier キーを設定します。これは、App ID の識別子と同じでなければなりません。「Apple デベロッパ プログラムで iOS アプリケーション ID を作成する」セクションの[Bundle ID]です。
モバイル デバイス上でのアプリケーションの実行
これで、シミュレータまたは接続したモバイル デバイスの上でアプリケーションを実行する準備ができました。
アプリケーションを実行するには:
- [プロジェクト マネージャ]でターゲット プラットフォームを選択します。
- 次のいずれかのコマンドを選択します。
- [実行|実行]
- [実行|デバッガを使わずに実行]
- [Active]チェック ボックスをクリックします。
- Parse、Kinvey、または EMS プッシュメッセージの送信に移動して、新しいプッシュを送信します:
- メモ: 独自の EMS アプリケーションを使用して EMS プッシュ通知メッセージを送信することができます。
Parse Kinvey EMS - モバイル デバイスに戻ります。
iOS Android iOS EMS
- アプリケーションをバックグラウンドに移動し、Parse または Kinvey から別のプッシュ通知を送信します。通知を開きます。
iOS Android
関連項目
- モバイル チュートリアル:通知を使用する(iOS および Android)
- モバイル チュートリアル:バックエンド ストレージ用に BaaS を使用する(iOS および Android)
- エンタープライズ モビリティ サービス
- EMS プッシュ通知
- [資格リスト]