1、创建应用
- 请在 http://push.umeng.com 上使用应用包名创建应用,获取应用对应的AppKey和Umeng Message Secret。
-
获取应用对应的AppKey和Umeng Message Secret,如下图:
2、导入PushSDK
1、把下载的zip文件解压缩(解压后的文件路径不能有中文)。
/2、把解压缩后得到的目录下的PushSDK当做Module导入到自己的工程,如下图所示:
注意:
PushSDK 3.0默认只提供armeabi和x86两种so文件夹,若主工程中的so文件夹与PushSDK下的so文件夹不一致,则可以有两种方式处理(选择一种即可):
- 删除主工程下多余的so文件夹,与PushSDK下的so文件夹保持一致。
在官网PushSDK下载处,下载全平台so文件,添加缺少的so文件夹至 PushSDK下,使PushSDK的so文件夹与主工程的so文件夹保持一致。 - 支持全平台SO文件下载支持全平台SO文件下载链接
导入thirdparties\thirdparties_android_1.0.7目录下的utdid4all-1.1.5.3_proguard.jar到app中libs目录下。
3、配置Appkey和Secret
在工程的Application Module的AndroidManifest.xml中的<Application>
标签下添加:
<meta-data
android:name="UMENG_APPKEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx">
</meta-data>
<meta-data
android:name="UMENG_MESSAGE_SECRET"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx">
</meta-data>
把上述的UMENG_APPKEY
和UMENG_MESSAGE_SECRET
的值修改为和自己应用对应的值。
4、添加Channel ID
你可以用Channel ID来标识App的推广渠道,作为推送消息时给用户分组的一个维度。设置方法如下,在Application Module的AndroidManifest.xml中的<Application>
标签下添加:
<!--value的值填写渠道名称,例如yingyongbao。这里设置动态渠道变量--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
在app build.gradle中配置渠道
productFlavors { /*配置渠道*/ productFlavors { yingyongbao { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"] } wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } xiaomi { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"] } } }
5、 配置build.gralde
- 在Application Module的build.gradle文件的
dependencies
下添加compile project(':PushSDK')
。 - 请确保Application Module的build.gradle文件中的
applicationId
与应用包名package
一致。
注意:
- 若主工程的targetSdkVersion为23及以上,请在代码中遵循Android 6.0的运行时权限机制申请存储权限(
WRITE_EXTERNAL_STORAGE
),否则在Android 6.0及以上机型可能出现无法选举宿主的情况。Android Plugin Version(com.android.tools.build:gradle)
推荐使用1.5.0及以上版本,使用过旧的版本可能由于编译问题导致无法获取device token。
6 、 初始化PushSDK
1 注册推送服务
务必
在工程的Application类的 onCreate()
方法中注册推送服务,无论推送是否开启都需要调用此方法:
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
//注册成功会返回device token
}
@Override
public void onFailure(String s, String s1) {
}
});
注意:
请勿在调用register方法时做进程判断处理(主进程和channel进程均需要调用register方法才能保证长连接的正确建立)。
- 若有需要,可以在Application的onCreate方法中创建一个子线程,并把
mPushAgent.register
这一行代码放到该子线程中去执行(请勿将PushAgent.getInstance(this)
放到子线程中)。- device token是友盟+生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上不同应用对应的device token不一样。
- 如需手动获取device token,可以调用
mPushAgent.getRegistrationId()
方法(需在注册成功后调用)。
2 统计应用启动数据
在所有的Activity 的onCreate
方法或在应用的BaseActivity
的onCreate
方法中添加:
PushAgent.getInstance(context).onAppStart();
注意:
此方法与统计分析sdk中统计日活的方法无关!请务必调用此方法!
如果不调用此方法,不仅会导致按照"几天不活跃"条件来推送失效,还将导致广播发送不成功以及设备描述红色等问题发生。可以只在应用的主Activity中调用此方法,但是由于SDK的日志发送策略,有可能由于主activity的日志没有发送成功,而导致未统计到日活数据。
register不成功,返回错误信息s=-11,s1=accs bindapp error,可查看https://blog.youkuaiyun.com/lknlll/article/details/78133392解决。