cocos2d-x集成友盟消息推送SDK(Android版)

前言:自己摸索研究友盟消息推送功能,Android和ios平台均测试通过。记录下来以备忘。中间踩了不少坑,尤其是ios关于证书的坑。友盟官方文档Android部分写得比较详尽,ios部分写得比较烂。本篇是cocos2d-x集成友盟消息推送功能的Android部分,大部分参考Android 消息推送(Message) SDK 集成指南。ios部分请见另一篇。

省略的内容

  • 什么是友盟
  • 注册友盟账号
  • [申请开通友盟消息推送服务]
  • [下载友盟消息推送SDK(Android)]

创建Android应用

1.进入友盟消息中心,创建安卓应用

cocos2d-x集成友盟消息推送SDK(Android版)_第1张图片


2.点击添加应用获得AppKey

cocos2d-x集成友盟消息推送SDK(Android版)_第2张图片

导入SDK所需的jar包

将下载的SDK压缩包解压,将其中的libs文件夹中的文件复制到安卓工程的libs目录下。
该SDK需要最新版本的 android-support-v4.jar    该jar包在SDK压缩包中的PushExamle2/libs中包含,可以复制到工程的libs目录下来用。
在Eclipse ADT中refresh一下。

配置AndroidManifest.xml

1.添加权限

标签下添加:












2.添加组件

标签下添加:



    
        
    
    
        

        
    

 
    
        
    



    
        
    
    
        
    
    
        
    


    
       
   

注意把【用用包名】替换为自己应用的包名。

形如 xxx.xxx.xxx.intent.action.COMMAND

3.添加AppKey和Umeng Message Secret

标签下添加:填写刚刚申请到的AppKey和Message Secret



注意:上述写法和如下写法相同,为xml的不同写法

如果不使用友盟的服务器,可以不填写 Umeng Message Secret

4.添加Channel ID

Channel ID用于友盟区分标记是在哪个平台(渠道)发布的安卓应用,比如360市场,91,百度等。如果在360市场发布,则Channel ID请填写你用于标记360市场的标签。如果需要在多个平台(渠道)发布应用,并且需要友盟区分是哪个平台(渠道),则每个发布平台需要单独生成安装包发布。并填写好用于你自己区分的Channel ID。
//名称随便填,只要自己知道就行

或者,通过调用一下代码设置推广渠道。

mPushAgent.setMessageChannel();

说明

  • 若同时在AndroidManifest.xml和代码设置了MessageChannel,则以代码设置的为准。
  • 若在AndroidManifest.xml和代码里均没有设置,则使用Unknown作为Channel ID。
  • 你可以使用20位以内的英文和数字为渠道定名(不要使用纯数字)。
  • 友盟消息推送可以和友盟统计分析共用一个"Channel ID"字段。
  • 你可以使用友盟渠道打包工具,一次生成多个渠道包。


添加代码

1.开启推送服务

打开Eclipse ADT,在【Package Explorer】---->【src】--->【项目名.java】的Activty的onCreate()函数中添加如下代码:
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.enable();
mPushAgent.onAppStart();//如果不调用此方法,将会导致按照"几天不活跃"条件推送失效。

2.获取设备的Device Token

可以在Debug模式下的logcat中看到Device Token,也可以在Activity的onResume()函数中添加如下代码:

String device_token = UmengRegistrar.getRegistrationId(this);
device_token = UmengRegistrar.getRegistrationId(this);
Log.d("mmmm", "----------device_token: " + device_token);

打印Device Token。

说明

  • Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
  • 获取Device Token的代码需要放在mPushAgent.enable();后面,注册成功以后调用才能获得Device Token。
  • 如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。

此段说明表明Android的Device Token由友盟生成,并且同一个设备上的不同应用对应的Device Token都不同。并且在联网状态下注册成功后才能获得Device Token,这就是获取函数放在onResume()函数中的原因,这样可以多次调用到。如果第一次为null,可以尝试重复唤醒调用。
ios与Android不同,ios的Device Token与系统绑定,同一台设备每个应用对应的Device Token是相同的。
连接真机,在Debug模式下运行项目,获取Device Token。如果控制台没有看到Device Token,尝试使用断点查看device_token变量的值。


测试推送消息

1.添加测试设备

在 友盟消息推送服务后台的【测试模式】中添加测试设备。
cocos2d-x集成友盟消息推送SDK(Android版)_第3张图片

2.发送测试消息

在测试手机联网的状态下,在友盟消息推送服务器后台中发送测试消息。在【发送给】选项中可以填写Device Token选择单播发送,如果在测试设备商收到消息,表明SDK集成成功。
cocos2d-x集成友盟消息推送SDK(Android版)_第4张图片



你可能感兴趣的:(Cocos2d-x)