IT行业交流群 群号:214682849
欢迎跟计算机相关专业的朋友加入,目前群正处于建设阶段,活跃人士可申请管理。
群主:秋叶残魂
友盟消息推送组件帮助您实时的推送消息给用户。
注意
消息推送SDK 支持Android 2.2 (API 8)及以上系统。建议在编译和混淆时引用最新版本Android SDK (17+),因为Message SDK 条件使用了一些android-8 以上的API。对于Android 2.2 以下的系统, 消息推送组件不工作,但不影响应用本身功能的正常使用。
集成SDK之前, 请在 http://message.umeng.com 创建应用,获取应用对应的AppKey和Umeng Message Secret。
1. 导入SDK所需jar包
下载最新版SDK的zip包,将其中的libs 文件夹合并到本地工程libs
子目录下,再在Eclipse里面刷新一下工程。
-
Eclipse ADT 17 以下版本用户,可以使用老方式添加工程引用。
Eclipse
用户鼠标右键工程根目录,选择Properties -> Java Build Path -> Libraries
,然后点击Add External JARs...
选择指向jar的路径,点击OK
,即导入成功。 -
Android Studio 以及Gradle 用户请参考如何引用第三方类库说明, 暂不提供 maven 支持。
-
本SDK需要最新版本的
android-support-v4.jar
支持包。请在工程中添加android-support-v4.jar
支持包。
2. 配置AndroidManifest.xml
2.1 添加权限
在
<manifest>
标签下:<uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
说明
- 下面两个权限为消息推送SDK V1.2.3版本中添加的权限,新版中已经不需要这两个权限。
<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.REORDER_TASKS" />
2.2 添加组件
在
<application>
标签下:注意
添加组件时需要将【应用包名】替换为你自己应用的包名。
<receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:exported="false" > </receiver> <receiver android:name="com.umeng.message.RegistrationReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.UmengBroadcastReceiver" > <intent-filter> <action android:name="org.agoo.android.intent.action.RECEIVE" /> </intent-filter> <intent-filter> <action android:name="【应用包名】.intent.action.COMMAND" /> </intent-filter> <intent-filter> <action android:name="org.agoo.android.intent.action.RE_ELECTION_V2" /> </intent-filter> </receiver> <service android:name="com.umeng.message.UmengService" android:exported="true" android:process=":umengService_v1" > <intent-filter> <action android:name="【应用包名】.intent.action.START" /> </intent-filter> <intent-filter> <action android:name="【应用包名】.intent.action.COCKROACH" /> </intent-filter> <intent-filter> <action android:name="org.agoo.android.intent.action.PING" /> </intent-filter> </service> <service android:name="org.android.agoo.service.ElectionService" android:exported="true" android:process=":umengService_v1" > <intent-filter> <action android:name="org.agoo.android.intent.action.ELECTION_V2" /> </intent-filter> </service> <service android:name="com.umeng.message.UmengIntentService" /> <!-- V1.3.0添加的service,负责下载通知的资源 --> <service android:name="com.umeng.message.UmengDownloadResourceService" />
2.3 添加 AppKey 和 Umeng Message Secret
在
<application>
标签下:<meta-data android:name="UMENG_APPKEY" android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" > </meta-data> <meta-data android:name="UMENG_MESSAGE_SECRET" android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" > </meta-data>
说明
请在 http://message.umeng.com 创建应用,获取应用对应的AppKey和Umeng Message Secret。
2.4 添加Channel ID
你可以用Channel ID来标识APP的推广渠道,作为推送消息时给用户分组的一个维度。设置方法如下:
在
<application>
标签下:<meta-data android:name="UMENG_CHANNEL" android:value="Channel ID" > </meta-data>
将"android:value"中的"Channel ID"替换为APP的推广渠道。
或者,通过调用以下代码来设置推广渠道。
mPushAgent.setMessageChannel();
说明
- 若同时在AndroidManifest.xml和代码设置了MessageChannel,则以代码设置的为准。
- 若在AndroidManifest.xml和代码里均没有设置,则使用Unknown作为Channel ID。
- 你可以使用20位以内的英文和数字为渠道定名(不要使用纯数字)。
- 友盟消息推送可以和友盟统计分析共用一个"Channel ID"字段。
- 你可以使用友盟渠道打包工具,一次生成多个渠道包。
3. 添加代码,编译测试
3.1 添加代码
3.1.1 开启推送服务
在应用的主Activity
onCreate()
函数中开启推送服务PushAgent mPushAgent = PushAgent.getInstance(context); mPushAgent.enable();
- 可以通过接口
mPushAgent.disable();
来关闭客户端的通知服务。 - 通过
mPushAgent.isEnabled()
来查询状态。 状态表示有没有启用/关闭推送功能, 不表示推送后台服务的运行状态。
注意
如果你的应用继承了Application, 不要在Application
onCreate()
中调用mPushAgent.enable();
. 由于SDK 设计的逻辑, 这会造成循环。
33 在测试模式中发送测试消息
3.3.1 获取测试设备的Device Token。
可以在Debug模式下输出的logcat中看到Device Token,也可以使用下面的方法来获取Device Token。
String device_token = UmengRegistrar.getRegistrationId(context)
说明
- Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
- 获取Device Token的代码需要放在
mPushAgent.enable();
后面,注册成功以后调用才能获得Device Token。 - 如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
3.3.2 添加测试设备
在友盟消息推送服务后台( http://message.umeng.com )的“测试模式”中填写该设备的Device Token,将该设备添加为测试设备,
3.3.3 发送测试消息
在“测试模式”中发送测试消息。在测试设备上收到消息,表明SDK集成成功。
说明
SDK 默认使用通知栏展示通知消息,开发者可以在友盟后台指定用户点击通知栏时的操作,包括“打开应用”、“打开指定页面(Activity)”、或“打开指定网页”。 如果没有收到消息,请参考FAQ中的处理方法。
*Device Token为(3.3.1 获取测试设备的Device Token);
参考资料友盟SDK与文档:http://dev.umeng.com/message/android/integration-guide