検索結果がありません

別のクエリまたはより具体的なクエリを試してください
開発者コンソール

A3L Messaging SDKの統合

A3L Messaging SDKの統合

このページでは、A3L Messaging SDKをプロジェクトに統合する方法について説明します。

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を使用しています。

  1. 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>
    
  2. A3LMessagingServiceの実装に関する詳細をメタデータとして追加します。これにより、A3L Messagingを適切に初期化できるようになります。

     <application>
     <!--  A3LMessagingの構成開始  -->
        
             <meta-data android:name="com.a3l.clsName"
                 android:value="com.example.mya3lapp.MyA3LMessagingService" />
        
     </application>
    

A3L Messagingを初期化する方法

onCreate()メソッド内で、A3L Messagingを初期化し、デバイスIDを取得する必要があります。以下の例のように、OnInitCallbackという抽象クラスのインスタンスを作成して、A3LMessaging.init()に渡します。

import com.amazon.A3L.messaging.A3LMessaging;
import com.amazon.A3L.messaging.InitCallbackResponse;
import com.amazon.A3L.messaging.OnInitCallback;

public class MainActivity extends AppCompatActivity {

    private final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        OnInitCallback onInitCallback = new OnInitCallback() {
            @Override
            public void onReady(InitCallbackResponse initCallbackResponse) {
                if (initCallbackResponse.isSuccessFul()){
                    Log.d(TAG, "デバイスID:" + initCallbackResponse.getToken());
                }
                else {
                    Log.d(TAG, "登録に失敗しました。エラー:" +
                            initCallbackResponse.getErrorMessage());
                }
            }
        };
        A3LMessaging.init(getApplicationContext(), onInitCallback);
    }
}

オプション - エスケープハッチを作成する方法

特別なユースケースのためにカスタムメソッドを作成する必要がある場合は、そのシナリオ用のエスケープハッチを作成できます。A3LMessagingクラスでは、ADMオブジェクトとFirebaseMessagingオブジェクトのインスタンスが提供されるので、これを使用して呼び出しを行うことができます。

  1. A3LMessaging.getCurrentPlatform()を使用して、現在のメッセージングソリューションをStringとして取得します。
    • FCM_PLATFORMが返された場合は、A3LMessaging.getFCMInstance()を使用してインスタンスを取得します。
    • ADM_PLATFORMが返された場合は、A3LMessaging.getADMInstance()を使用します。
  2. これで、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インスタンスを使用して処理を実行します。
     }
    
  3. A3LMessagingServiceでサポートされていないメソッドをオーバーライドする必要がある場合は、独自のカスタムクラスを作成できます。これを行うには、ソリューション固有のAPIを継承し、必要なメソッドをオーバーライドします。

    たとえば、FirebaseMessagingServiceonDeletedMessages()メソッドがアプリで必要な場合は、次の例のようなクラスを作成できます。

     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のテストを参照してください。