A3L Messaging SDKの統合
このページでは、A3L Messaging SDKをプロジェクトに統合する方法について説明します。
- A3LMessagingServiceクラスを拡張する方法
- アプリのマニフェストを更新する方法
- 登録トークンを取得する方法
- オプション - エスケープハッチを作成する方法
- A3L Messaging APIリファレンス
- 次のステップ
- 関連リソース
A3LMessagingServiceクラスを拡張する方法
A3LMessagingService
クラスは、A3L Messaging SDKに含まれています。アプリがメッセージを受信できるようにするには、このクラスを拡張する必要があります。次の表に、実装でオーバーライドする必要があるメソッドを示します。
メソッド | 説明 |
---|---|
onMessageReceived() |
メッセージがアプリインスタンスに配信されたときに呼び出されます。 |
onNewToken() |
アプリインスタンスの新しいデバイスIDが利用可能になると呼び出されます。 |
以下のコードは、MyA3LMessagingService
というクラスを使用した実装の例です。
public class MyA3LMessagingService extends A3LMessagingService {
private final String TAG = "MyA3LMessagingService";
@Override
public void onMessageReceived(Context context, RemoteMessage remoteMessage){
Log.d(TAG, "onNewMessage内");
// ここでメッセージを処理します(非同期タスクの開始など)。
}
@Override
public void onNewToken(Context context, String token){
Log.d(TAG, "onNewDeviceId内");
// ここでデバイスIDを処理します(サーバーへの保存など)。
}
}
アプリのマニフェストを更新する方法
メッセージを受信するには、アプリのAndroidManifest.xmlファイルを更新する必要があります。以下の例では、A3LMessagingService
クラスの実装のプレースホルダーとして、MyA3LMessagingService
を使用しています。
-
A3LMessagingService
クラスの実装をレシーバーとして宣言します。これにより、REGISTRATION
インテントとMESSAGE
インテントを処理できるようになります。<application> <!-- A3LMessagingの構成開始 --> <receiver android:name=".MyA3LMessagingService" android:exported="false" android:enabled="true"> <intent-filter> <action android:name="com.amazon.A3L.messaging.intent.REGISTRATION"/> <action android:name="com.amazon.A3L.messaging.intent.MESSAGE"/> </intent-filter> </receiver> </application>
-
A3LMessagingService
の実装に関する詳細をメタデータとして追加します。これにより、A3L Messagingを適切に初期化できるようになります。<application> <!-- A3LMessagingの構成開始 --> <meta-data android:name="com.a3l.clsName" android:value="com.example.mya3lapp.MyA3LMessagingService" /> </application>
登録トークンを取得する方法
アプリの初回起動時に、A3L Messagingライブラリによってクライアントアプリインスタンスの登録トークンが生成されます。このトークンは、A3LMessagingService
クラスのオーバーライドされたonNewToken()
メソッドで配信されます。
現在の登録トークンを取得するには、次の例に示すように、A3LMessaging.getToken()
を呼び出します。
A3LMessaging.getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(Task<String> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "登録トークンの取得に失敗しました", task.getException());
return;
}
// 新しいFCM/ADM登録トークンを取得します
String token = task.getResult();
Log.d(TAG, token);
}
});
オプション - エスケープハッチを作成する方法
特別なユースケースのためにカスタムメソッドを作成する必要がある場合は、そのシナリオ用のエスケープハッチを作成できます。A3LMessaging
クラスでは、ADM
オブジェクトとFirebaseMessaging
オブジェクトのインスタンスが提供されるので、これを使用して呼び出しを行うことができます。
A3LMessaging.getCurrentPlatform()
を使用して、現在のメッセージングソリューションをString
として取得します。FCM_PLATFORM
が返された場合は、A3LMessaging.getFCMInstance()
を使用してインスタンスを取得します。ADM_PLATFORM
が返された場合は、A3LMessaging.getADMInstance()
を使用します。
-
これで、
FirebaseMessaging
オブジェクトやADM
オブジェクトを使用して直接呼び出しを行うことができます。次の例を参照してください。String currentPlatform = A3LMessaging.getCurrentPlatform(); if(A3LMessagingConstants.ADM_PLATFORM.equals(currentPlatform)){ ADM adm = A3LMessaging.getADMInstance(); // ADMインスタンスを使用して処理を実行します。 } else if (A3LMessagingConstants.FCM_PLATFORM.equals(currentPlatform)){ FirebaseMessaging firebaseMessaging = A3LMessaging.getFCMInstance(); // FCMインスタンスを使用して処理を実行します。 }
-
A3LMessagingService
でサポートされていないメソッドをオーバーライドする必要がある場合は、独自のカスタムクラスを作成できます。これを行うには、ソリューション固有のAPIを継承し、必要なメソッドをオーバーライドします。たとえば、
FirebaseMessagingService
のonDeletedMessages()
メソッドがアプリで必要な場合は、次の例のようなクラスを作成できます。import com.google.firebase.messaging.FirebaseMessagingService; public class MyCustomService extends FirebaseMessagingService { @Override public void onDeletedMessages(){ // 関数のカスタム処理 } }
また、このAPIのイベントをリッスンするようにアプリをセットアップする必要もあります。必要となるセットアップは、メッセージングソリューションとAPIによって異なる場合があります。
A3L Messaging APIリファレンス
A3L Messaging SDKに含まれるクラスとメソッドの詳細については、これらが網羅されているA3L Messaging APIリファレンスを参照してください。
次のステップ
A3L Messagingのテストを参照してください。