集成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
类实现的占位符。
-
将
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。