安卓友盟推送集成过程详解(一)

1,获取应用对应的Appkey和Umeng Message Secret

登录友盟U-Push官网,创建一个新应用,如下:
安卓友盟推送集成过程详解(一)
如果你的应用之前已经集成了【友盟+】统计功能,就不用创建新的应用了,直接从已有应用中添加关联即可:
安卓友盟推送集成过程详解(一)
进入该应用后台,点击左侧菜单:应用管理 --> 应用信息,获取应用对应的Appkey和Umeng Message Secret,这两个值请务必留意,在后续SDK初始化中需要用到。
安卓友盟推送集成过程详解(一)

2,自动导入PushSDK(该方式不需要在官网下载SDK)

在app的build.gradle配置脚本中添加如下maven远程依赖,导入最新版本PushSDK:

//PushSDK必须依赖基础组件库,所以需要加入对应依赖
compile 'com.umeng.sdk:common:1.5.3'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
compile 'com.umeng.sdk:utdid:1.1.5.3'
//PushSDK
compile 'com.umeng.sdk:push:4.2.0'

如果无法正常集成请在工程目录下的build.gradle添加如下配置:

allprojects {
    repositories {
          mavenCentral()
    }
}

3,初始化PushSDK

在自定义Application类的 onCreate() 方法中执行init初始化方法,这里有两个重载的init方法可供选择:

1. UMConfigure.init(this, "第一步获取的appkey", "自定义的渠道号", UMConfigure.DEVICE_TYPE_PHONE, "第一步获取的secret");
2. UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "第一步获取的secret");

参数UMConfigure.DEVICE_TYPE_PHONE表示设备为手机。

可以看到两个重载的方法相比,少了appkey和渠道号两个参数,选择依据就是是否在清单文件Manifest的application标签中配置过了appKey和渠道号,如下:

<manifest>
    <application ……>
        ……
        <meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/> 
        <meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> 
    </application>    
</manifest>

如果在Manifest文件中添加了如上配置,那么初始化时可选择使用方法1也可以选择方法2,此时方法2对应位置可以传入null,如果同时设置了则以代码中设置的为准,否则使用方法2。
渠道号命名规范建议:不要使用中文,空格,和纯数字

4,注册推送服务

务必在工程的自定义Application类的 onCreate() 方法中注册推送服务,无论推送是否开启都需要调用此方法:

PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {

    @Override
    public void onSuccess(String deviceToken) {
        // 注册成功会返回devicetoken
        // 参数devicetoken是【友盟+】消息推送生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上不同应用对应的device token不一样。
        // 直接打印Toast不会生效
        new Handler(getMainLooper()).post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MyApp.this, "deviceToken:"+deviceToken, Toast.LENGTH_SHORT).show();
                    }
                });
    }

    @Override
    public void onFailure(String s, String s1) {

    }
});

如需在其他地方获取device token,可以调用mPushAgent.getRegistrationId()方法进行手动获取(需在注册成功后调用)。

5,应用数据统计接口

在所有的Activity 的onCreate 方法或在应用的BaseActivity的onCreate方法中添加如下代码:

PushAgent.getInstance(context).onAppStart();

该方法是【友盟+】Push后台进行日活统计及多维度推送的必调用方法,请务必调用!


经过以上5步的配置,运行应用我们可以发现此时已经成功获取到了deviceToken!接下来我们马上可以向这台设备推送消息了,接着往下看:


开始消息推送

1,添加测试设备
在【友盟+】消息推送服务Push后台的“测试模式”中填写上面获取到的deviceToken,将该设备添加为测试设备:
安卓友盟推送集成过程详解(一)
安卓友盟推送集成过程详解(一)
然后切换到“测试消息”选项,消息推送服务后台创建一条消息,详细过程如下所示:
安卓友盟推送集成过程详解(一)
然后在我们的手机上就可以成功接收到推送的消息了。

注意:
以上成功集成推送功能没有添加任何权限(网络权限也没有添加)也没有在libs目录下导入任何jar包,只要保证测试手机有网络即可。

至此我们已经详细讲解了如何快速集成友盟推送SDK,关于更多高级功能,请查看下一篇博客:友盟Push SDK高级功能详解。