前言:自己摸索研究友盟消息推送功能,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张图片



更多相关文章

  1. Android消息推送完美方案
  2. 一个hello程序的android内核模块编译方法及在模拟器中进行测试结
  3. android的两种布局------------------------经自身测试,完全正确
  4. Android之百度推送高级篇之消息【原创】
  5. Android 蓝牙设备的开启与关闭功能的实现
  6. js判断用户设备的类型(iOS,Android,pc等)
  7. 【Android】从主线程向子线程发消息
  8. Android中蓝牙设备搜索
  9. Android Gradle Release Version 2.4 增加多进程并行编译,经测试

随机推荐

  1. 工作环境搭建(9) - CentOS7命令行安装And
  2. adb Not running as root. Try "adb root
  3. android 获取手机所有短信内容
  4. android scaleType的属性
  5. android里发送mail的几种方式
  6. Linux 下Android 开发环境搭建
  7. (转载自diycode)2017 Android 面试题分享
  8. Maven开发Android指南 2 配置android-mav
  9. 安装|卸载apk文件在Android仿真器中
  10. android 画虚线、实线,画圆角矩形,一半圆角