public interface CloudPushService { /** * 初始化用户的SDK,将应用关联到云通道(如果推送服务没有启动,会自动启动推送服务并作为Master身份) * @param context 应用的上下文(ApplicationContext) * @param callback 操作的回调。可以为空,跳过回调。 */ void register(final Context context, final CommonCallback callback); /** * app启动时,进行启动信息统计 */ void onAppStart(); /** * 客户端给当前应用打自定义标签(可以根据自定义标签做推送) * * @param tag 标签名称 * @param callback 回调 */ void addTag(final String tag, final CommonCallback callback); /** * 删除当前应用的自定义标签(后续将不能根据自定义标签做推送) * * @param tag 标签名称 * @param callback 回调 */ void removeTag(final String tag, final CommonCallback callback); /** * 将应用内部的账号与推送通道进行关联(可以实现按账号的定点消息推送) * * @param account */ void bindAccount(String account); /** * 将应用内部的账号与推送通道进行关联(可以实现按账号的定点消息推送) * * @param account * @param callback 可以为空,操作的回调 */ void bindAccount(final String account, final CommonCallback callback); /** * 将应用内部的账号与推送通道取消关联(后续将无法收到服务端按账号推送的消息) */ void unbindAccount(); /** * 将应用内部的账号与推送通道取消关联(后续将无法收到服务端按账号推送的消息) * * @param callback 可以为空,操作的回调 */ void unbindAccount(final CommonCallback callback); /** * 向服务端应答消息的状态 * * @param messageID 消息ID * @param type 应答类型(打开:4,删除:8) */ void report(final String messageID, final int type); /** * @return deviceId 获取当前设备的唯一标识 */ String getDeviceId(); /** * @return UTDId 获取内部设备标识 */ String getUTDeviceId(); }
通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。
使用方法:
<!--消息接收监听器--> <receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ... </receiver>
CloudPushService cloudPushService = AlibabaSDK.getService(CloudPushService.class); Log.d("DeviceId: ", cloudPushService.getDeviceId());
12-10 12:40:52.323 24974-24974/com.xxx D/TestBindFragment: deviceId = d4cb97628488482ab5b0c741ccab7e40
CloudPushService cloudPushService = AlibabaSDK.getService(CloudPushService.class); cloudPushService.bindAccount("$我的账号", new CommonCallback() { @Override public void onSuccess() { Log.d(TAG, "bind account success"); } @Override public void onFailed(String errorCode, String errorMessage) { Log.d(TAG, "bind account fail" + "err:" + errorCode + " - message:"+ errorMessage); } });
2.如果需要换一个账号绑定,直接调用bindAccount(“新的账号”,new CommonCallback() {…})即可。
3.解绑账号
CloudPushService cloudPushService = AlibabaSDK.getService(CloudPushService.class); cloudPushService.unbindAccount(new CommonCallback() { ... });
和绑定用户一样,你可以使用 cloudPushService.addTag(String tag, CommonCallback callback); 给指定客户端添加你需要的推送标签。注意,标签最多为10个字符,收尾不要带空格符号。对于同一设备,请不要绑定10个以上Tag.
使用cloudPushService.removeTag可以移除添加的标签。
account和tag不能是中文,不然会出现错误
消息命令是利用长链接,通过服务器发送给客户端静默的消息命令,可用于聊天场景,或者更新 sdk 等等场景,与通知的差别是不会在 app 中作为通知提醒。
SDK接入:
继承并在manifest中替换com.alibaba.sdk.android.push.MessageReceiver
你可以从CPushMessage中读取到消息的 messageId,appId,title,content。
注意:在控制台推送时,请选择“推送消息”。如果使用openapi推送的,注意type字段的选择。
在通知弹出以后,会继续调用onNotification。通过扩展onNotification你可以获得通知相关的信息(标题,内容,扩展字段等) 。
onNotificationOpened(Context context, String title, String summary, String extraMap) onNotificationRemoved(Context context, String messageId)
在用户点击消息,或者清除消息的时候,你希望你的应用在点击/清除后获得相关的数据(如获取标题,或扩展字段的内容)
你可以覆盖上面onNotificationOpened和onNotificationRemoved方法。
群号:1074804791