开发者控制台

集成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, "In onNewMessage");
        // 在此处理消息。例如,启动一个异步任务。
    }

    @Override
    public void onNewToken(Context context, String token){
            Log.d(TAG, "In onNewDeviceId");
        // 在此处理设备ID。例如,将其存储在您的服务器上。
    }
}

更新您的应用清单

要接收消息,必须更新应用的AndroidManifest.xml文件。以下示例使用MyA3LMessagingService作为A3LMessagingService类实现的占位符。

  1. A3LMessagingService类的实现声明为接收器。这让您能够处理REGISTRATIONMESSAGE意图。

     <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库会为客户端应用实例生成注册令牌。该令牌在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对象的实例,您可以从其进行调用。

  1. 使用A3LMessaging.getCurrentPlatform()String形式获取当前消息传递解决方案。
    • 如果返回FCM_PLATFORM,请使用A3LMessaging.getFCMInstance()获取实例。
    • 如果返回了ADM_PLATFORM,则使用A3LMessaging.getADMInstance()
  2. 现在,您可以直接使用FirebaseMessagingADM对象进行调用。请参阅以下示例。

     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继承并覆盖需要访问的方法。

    例如,如果应用需要从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