您的位置:首页 > 其它

安卓学习笔记5——个推透传服务体验

2014-03-18 15:38 225 查看
参考工程:点击打开链接

1.引子

在上一篇中我们讲到如何使app能够接收个推推送信息。但是这样的推送信息只能够在通知栏显示,而不能被我们应用本身使用,所以在这一篇中我们继续讲接收能够被我们应用所利用的推送信息。也就是个推所说的透传信息。

2.使用步骤

以下步骤在上一篇配置好个推的基础上进行,具体可以查看安卓学习笔记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;
}

}

};


步骤三:在oncreate中注册broadcast receiver类

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTIONNAME_STRING);
registerReceiver(broadcastReceiver, intentFilter);


步骤四:别忘了对个推sdk的初始化,详情见安卓开发笔记4

3.总结

到这里我们就能够使用broadcast receiver类接受透传消息,并在receiver中对透传消息进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: