1,下载友盟的sdk,将压缩包下的libs下的内容复制到工程的libs下,下载地址
2,本SDK需要最新版本的 android-support-v4.jar
支持包。eclipse用户,直接导入jar包。sudio用户在build.gardle里加入v4支持,如下代码
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.1.1'
compile files('libs/android-support-v4.jar')
}
3, 配置AndroidManifest.xml
3.1 添加权限
在<manifest>标签下:
<!-- 权限声明开始-->
<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" />
<!--【可选】如果需要设置前台是否显示通知,需要设置这个权限-->
<uses-permission android:name="android.permission.GET_TASKS" />
<!-- 可选 -->
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_ADDED" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />;
<!-- 权限声明结束-->
3.2 添加组件
在<application>标签下:
注意 添加组件时需要将【应用包名】替换为你自己应用的包名。
<!--友盟消息推送server声明开始-->
<receiver
android:name="com.umeng.message.NotificationProxyBroadcastReceiver"
android:process=":push"
android:exported="false" >
</receiver>
<receiver
android:name="com.umeng.message.SystemReceiver"
android:process=":push" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<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.MessageReceiver"
android:process=":push" >
<intent-filter>
<action android:name="org.agoo.android.intent.action.RECEIVE" />
</intent-filter>
</receiver>
<receiver
android:name="com.umeng.message.ElectionReceiver"
android:process=":push" >
<intent-filter>
<action android:name="org.agoo.android.intent.action.ELECTION_RESULT_V4" />
<category android:name="umeng" />
</intent-filter>
</receiver>
<receiver
android:name="com.umeng.message.RegistrationReceiver"
android:exported="false" >
<intent-filter>
<action android:name="【应用包名】.intent.action.COMMAND" />
</intent-filter>
</receiver>
<receiver android:name="com.umeng.message.UmengMessageBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
可以根据需要自行设置 android:label 中的服务名 :
<service
android:name="com.umeng.message.UmengService"
android:label="PushService"
android:exported="true"
android:process=":push" >
<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_V4" />
<category android:name="umeng" />
</intent-filter>
</service>
<service android:name="com.umeng.message.UmengIntentService"
android:process=":push" />
<service
android:name="com.umeng.message.UmengMessageIntentReceiverService"
android:process=":push"
android:exported="true" >
<intent-filter>
<action android:name="org.android.agoo.client.MessageReceiverService" />
</intent-filter>
<intent-filter>
<action android:name="org.android.agoo.client.ElectionReceiverService" />
</intent-filter>
</service>
<!-- V1.3.0添加的service,负责下载通知的资源 -->
<service android:name="com.umeng.message.UmengDownloadResourceService" />
<!--友盟消息推送server声明结束-->
3.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。
3.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"字段。
4,获取手机在友盟注册的唯一设备号,给后台开发人员。在activity的onCreate()中
/**设备号**/
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.enable();
String device_token = UmengRegistrar.getRegistrationId(this);
System.out.println("设备号="+device_token);
/**设备号**/
更多内容见官方文档