未找到任何结果

尝试其他或更具体的查询
开发者控制台

集成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

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, "Device Id: " + initCallbackResponse.getToken());
                }
                else {
                    Log.d(TAG, "Registration failed with Error: " +
                            initCallbackResponse.getErrorMessage());
                }
            }
        };
        A3LMessaging.init(getApplicationContext(), onInitCallback);
    }
}

可选 - 创建转义填充

如果您有一个特殊用例,并且想要创建自定义方法,则可以为该场景创建转义填充。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