参考工程:点击打开链接
在上一篇中我们讲到如何使app能够接收个推推送信息。但是这样的推送信息只能够在通知栏显示,而不能被我们应用本身使用,所以在这一篇中我们继续讲接收能够被我们应用所利用的推送信息。也就是个推所说的透传信息。
以下步骤在上一篇配置好个推的基础上进行,具体可以查看安卓学习笔记4——推送服务初体验
为了能够接收透传信息,我们需要使用broadcast Receiver类,广播类可以动态注册或者在xml文件中静态注册,为了能够让broadcast receiver 能够对activity中的控件进行注册。我们选择在activity动态定义和注册broadcast receiver类。
步骤一:
定义常量: 个推透传信息的广播类型。
private static final String ACTIONNAME_STRING="com.igexin.sdk.action.你应用的appid";
步骤二:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Log.d("GexinSdkDemo", "onReceive() action=" + bundle.getInt("action")); switch (bundle.getInt(Consts.CMD_ACTION)) { case Consts.GET_MSG_DATA: // 获取透传(payload)数据 byte[] payload = bundle.getByteArray("payload"); if (payload != null) { data = new String(payload); Log.d("GexinSdkDemo", "Got Payload:" + data); editor.putString("IP", data); editor.commit(); IP.setText(data); } break; case Consts.GET_CLIENTID: // 获取ClientID(CID) String cid = bundle.getString("clientid"); Log.d("GexinSdkDemo", "Got ClientID:" + cid); // TODO: /* 第三方应用需要将ClientID上传到第三方服务器,并且将当前用户帐号和ClientID进行关联,以便以后通过用户帐号查找ClientID进行消息推送 有些情况下ClientID可能会发生变化,为保证获取最新的ClientID,请应用程序在每次获取ClientID广播后,都能进行一次关联绑定 */ break; default: break; } } };
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ACTIONNAME_STRING); registerReceiver(broadcastReceiver, intentFilter);
到这里我们就能够使用broadcast receiver类接受透传消息,并在receiver中对透传消息进行处理。