App消息推送
下载最新版SDK的zip包,将其中的libs 文件夹合并到本地工程libs
子目录下,再在Eclipse里面刷新一下工程。
注意
Eclipse ADT 17 以下版本用户,可以使用老方式添加工程引用。
Eclipse
用户鼠标右键工程根目录,选择Properties -> Java Build Path -> Libraries
,然后点击Add External JARs...
选择指向jar的路径,点击OK
,即导入成功。 如果引用过程中出现问题, 可以参考Dealing with dependencies in Android projects.Android Studio 以及Gradle 用户请参考如何引用第三方类库说明, 暂不提供 maven 支持。
本SDK需要最新版本的
android-support-v4.jar
支持包。请在工程中添加android-support-v4.jar
支持包。 关于v4 支持包说明, 请参考 http://developer.android.com/tools/support-library/features.html#v4 .
标签下与消息推送相关的组件包名。
在
标签下:
<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" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
说明
- 下面两个权限为消息推送SDK V1.2.3版本中添加的权限,新版中已经不需要这两个权限。
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
在
标签下:
注意
添加组件时需要将【应用包名】替换为你自己应用的包名。
<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>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
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" />
<service android:name="com.umeng.message.UmengDownloadResourceService" />
在
标签下:
<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。
你可以用Channel ID来标识APP的推广渠道,作为推送消息时给用户分组的一个维度。设置方法如下:
在
标签下:
<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"字段。
- 你可以使用友盟渠道打包工具,一次生成多个渠道包。
在应用的主Activity onCreate()
函数中开启推送服务
PushAgent mPushAgent = PushAgent.getInstance(context);
mPushAgent.enable();
mPushAgent.disable();
来关闭客户端的通知服务。mPushAgent.isEnabled()
来查询状态。 状态表示有没有启用/关闭推送功能, 不表示推送后台服务的运行状态。注意
如果你的应用继承了Application, 不要在Application
onCreate()
中调用mPushAgent.enable();
. 由于SDK 设计的逻辑, 这会造成循环。
在所有的Activity 的onCreate
函数添加
PushAgent.getInstance(context).onAppStart();
注意: 如果不调用此方法,将会导致按照"几天不活跃"条件来推送失效。
如果在测试或其他使用场景中,需要获取设备的Device Token,可以使用下面的方法。
String device_token = UmengRegistrar.getRegistrationId(context)
说明
- Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
- 获取Device Token的代码需要放在
mPushAgent.enable();
后面,注册成功以后调用才能获得Device Token。- 如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
添加代码完毕后,编译apk包。然后将apk包安装到联网的测试设备上并打开。
说明
如果在编译和调试过程中遇到问题(例如混淆或无法编译),请参考步骤7中常见问题的处理方法。
可以在Debug模式下输出的logcat中看到Device Token,也可以使用下面的方法来获取Device Token。
String device_token = UmengRegistrar.getRegistrationId(context)
说明
- Device Token为友盟生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上每个应用对应的Device Token不一样。
- 获取Device Token的代码需要放在
mPushAgent.enable();
后面,注册成功以后调用才能获得Device Token。- 如果返回值为空, 说明设备还没有注册成功, 需要等待几秒钟,同时请确保测试手机网络畅通。
在友盟消息推送服务后台( http://message.umeng.com )的“测试模式”中填写该设备的Device Token,将该设备添加为测试设备,
在“测试模式”中发送测试消息。在测试设备上收到消息,表明SDK集成成功。
说明
SDK 默认使用通知栏展示通知消息,开发者可以在友盟后台指定用户点击通知栏时的操作,包括“打开应用”、“打开指定页面(Activity)”、或“打开指定网页”。 如果没有收到消息,请参考FAQ中的处理方法。
如果要使用API对接友盟服务器来发送消息,需要在友盟消息推送服务后台( http://message.umeng.com )填写服务器地址,进行白名单登记。 参考API文档中的格式发送测试消息。需要填写正确的App Master Secret。
在友盟后台,消息分为两类:
1. 通知消息
该消息包含Notification所需的参数,如Notification的标题、内容、是否振动、点击后的相应动作等信息。如下图所示:
推荐文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
稳定
产品高可用性高并发贴心
项目群及时沟通专业
产品经理1v1支持快速
MVP模式小步快跑承诺
我们选择声誉坚持
10年专注高端品质开发