首页 > 技术文章 > android个推推送平台的使用

cwr941012 2014-03-26 23:35 原文

之前写推送功能都在使用百度云推送的系统,然后,突然发现百度云推送在教育网情况下的服务不是很稳定,因此决定采用个推开放平台

 

个推的官网http://dev.igetui.com/,在这上面注册账号很简单,注册之后,登记新应用,然后有两种方式,一种可以下载SDK自己接入,

还有一种可以选择下载官方网站的示例Demo进行自己的修改,个推的SDK配置其实还是很简单的,官网的文档讲的也很详细下载的SDK包里面有比较详细的接口和文档

 

但是,在这里我说一下我在使用之中遇到的几个问题,

首先  注册推送服务的代码是

 

    1 MessageManager.getInstance().initialize(this.getApplicationContext()); 

 

在这里,成功注册服务之后,会收到一个clientid 这个clientid对应的是设备,在同一个设备上同一个应用不论启动多少次都会拿到同一个值

必须要等到拿到clientid之后才会开始推送服务,平均注册成功的时间依据你的当前的网络状况来确定,一般情况下应该在10-15秒

 

另外,在这里,使用服务器推送消息智能推送透传消息,在官网的首页看到的通知消息是不能使用服务器推送的,透传消息需要注册一个BroadcastReceiver

在文档中和官方的Demo中都有说明就不详细介绍了这个东西

 

在这个里面,这个是取得透传数据的代码部分,同时因为要通知主线程更新UI线程,所以我使用了BroadcastReceiver来确保能使消息更新主线程

 

case Consts.GET_MSG_DATA:
            // 获取透传数据
            // String appid = bundle.getString("appid");
            byte[] payload = bundle.getByteArray("payload");

            if (payload != null) {
                String data = new String(payload);
                                System.out.println("the item is " + data);
                Log.d("GexinSdkDemo", "Got Payload:" + data);
                Intent intent1 = new Intent();
                intent1.setAction("com.message");
                context.sendBroadcast(intent1);
            }                

 

同时clientid也是在这里面拿到的

1     case Consts.GET_CLIENTID:
2             // 获取ClientID(CID)
3             // 第三方应用需要将CID上传到第三方服务器,并且将当前用户帐号和CID进行关联,以便日后通过用户帐号查找CID进行消息推送
4             String cid = bundle.getString("clientid");
5 
6             System.out.println("the client id is" + cid);
7             break;

 

同时,在个推中还有许多功能其他的功能可以拓展,我正在研究中,以后可能还会有其他的更新

 

 

推荐阅读