消息推送SDK快速集成:
申請(qǐng)AppKey? ——>? 接入Push SDK? ——>? 基礎(chǔ)接口引入? ——>? 消息推送測(cè)試??——>? 接入完成
1.申請(qǐng)AppKey


2.接入Push SDK
1).加入依賴
//友盟push相關(guān)依賴(必須)
implementation'com.umeng.umsdk:push:6.1.0'
implementation'com.umeng.umsdk:alicloud-httpdns:1.2.5'
implementation'com.umeng.umsdk:alicloud-utils:1.1.5'
implementation'com.umeng.umsdk:alicloud_beacon:1.0.1'
implementation'com.umeng.umsdk:agoo-accs:3.3.8.8-open-fix2'
implementation'com.umeng.umsdk:agoo_networksdk:3.5.5'
implementation'com.umeng.umsdk:agoo_tlog:3.0.0.17'
implementation'com.umeng.umsdk:agoo_tnet4android:3.1.14.9'
implementation'com.umeng.umsdk:asms:1.1.3'
implementation'com.umeng.umsdk:crash:0.0.4'
2).在工程build.gradle配置腳本中buildscript和allprojects段中添加【友盟+】sdk 新maven倉(cāng)庫(kù)地址
buildscript {
? ? repositories {
? ? ? ? google()
? ? ? ? jcenter()
? ? ? ? maven { url 'https://dl.bintray.com/umsdk/release' }
? ? }
? ? dependencies {
? ? ? ? classpath 'com.android.tools.build:gradle:3.1.4'
? ? ? ? // NOTE: Do not place your application dependencies here; they belong
? ? ? ? // in the individual module build.gradle files
? ? }
}
allprojects {
? ? repositories {
? ? ? ? google()
? ? ? ? jcenter()
? ? ? ? mavenCentral()
? ? ? ? maven { url 'https://dl.bintray.com/umsdk/release' }
? ? }
}
3).在AndroidManifest.xml文件中引入相關(guān)基礎(chǔ)組件:
<!-- 以下為基本配置信息,需要自行添加至您的AndroidManifest文件中 start-->
? ? ? ? <service
? ? ? ? ? ? android:name="com.taobao.accs.ChannelService"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.SERVICE" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.ELECTION" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <service
? ? ? ? ? ? android:name="com.taobao.accs.data.MsgDistributeService"
? ? ? ? ? ? android:exported="true">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.RECEIVE" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <receiver
? ? ? ? ? ? android:name="com.taobao.accs.EventReceiver"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <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>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="android.intent.action.USER_PRESENT" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </receiver>
? ? ? ? <receiver
? ? ? ? ? ? android:name="com.taobao.accs.ServiceReceiver"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.COMMAND" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.START_FROM_AGOO" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </receiver>
? ? ? ? <service
? ? ? ? ? ? android:name="com.taobao.accs.internal.AccsJobService"
? ? ? ? ? ? android:permission="android.permission.BIND_JOB_SERVICE"
? ? ? ? ? ? android:process=":channel"/>
? ? ? ? <service
? ? ? ? ? ? android:name="com.taobao.accs.ChannelService$KernelService"
? ? ? ? ? ? android:process=":channel" />
? ? ? ? <service
? ? ? ? ? ? android:name="org.android.agoo.accs.AgooService"
? ? ? ? ? ? android:exported="true">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.taobao.accs.intent.action.RECEIVE" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <service
? ? ? ? ? ? android:name="com.umeng.message.UmengIntentService"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="org.agoo.android.intent.action.RECEIVE" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <service
? ? ? ? ? ? android:name="com.umeng.message.XiaomiIntentService"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="org.agoo.android.intent.action.RECEIVE" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <receiver
? ? ? ? ? ? android:name="com.taobao.agoo.AgooCommondReceiver"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="${applicationId}.intent.action.COMMAND" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="android.intent.action.PACKAGE_REMOVED" />
? ? ? ? ? ? ? ? <data android:scheme="package" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </receiver>
? ? ? ? <service
? ? ? ? ? ? android:name="com.umeng.message.UmengMessageIntentReceiverService"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:process=":channel">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="org.android.agoo.client.MessageReceiverService" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <receiver
? ? ? ? ? ? android:name="com.umeng.message.NotificationProxyBroadcastReceiver"
? ? ? ? ? ? android:exported="false" />
? ? ? ? <service
? ? ? ? ? ? android:name="com.umeng.message.UmengMessageCallbackHandlerService"
? ? ? ? ? ? android:permission="android.permission.BIND_JOB_SERVICE"
? ? ? ? ? ? android:exported="false">
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.umeng.messge.registercallback.action" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.umeng.message.enablecallback.action" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.umeng.message.disablecallback.action" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.umeng.message.message.handler.action" />
? ? ? ? ? ? </intent-filter>
? ? ? ? ? ? <intent-filter>
? ? ? ? ? ? ? ? <action android:name="com.umeng.message.message.sendmessage.action" />
? ? ? ? ? ? </intent-filter>
? ? ? ? </service>
? ? ? ? <service
? ? ? ? ? ? android:name="com.umeng.message.UmengDownloadResourceService"
? ? ? ? ? ? android:permission="android.permission.BIND_JOB_SERVICE"
? ? ? ? ? ? android:exported="false" />
? ? ? ? <provider
? ? ? ? ? ? android:name="com.umeng.message.provider.MessageProvider"
? ? ? ? ? ? android:authorities="${applicationId}.umeng.message"
? ? ? ? ? ? android:exported="false">
? ? ? ? ? ? <grant-uri-permission android:pathPattern=".*" />
? ? ? ? </provider>
? ? ? ? <!-- 以下為基本配置信息,需要自行添加至您的AndroidManifest文件中 end-->
4、引入so文件? (全平臺(tái)so文件下載地址)? ? ?
? ? ? 注意:這邊下載的so文件可能會(huì)少,最好分方法就是直接吧友盟demo中l(wèi)ibs的文件全粘進(jìn)去(開(kāi)發(fā)者Demo)
5.引入默認(rèn)通知欄通知樣式布局文件(開(kāi)發(fā)者Demo)
? ?upush_bar_image_notification.xml
? ?upush_notification.xml
3.基礎(chǔ)接口引入
1).在工程的MyApplication類的?onCreate()?方法中做SDK代碼初始化工作。
UMConfigure.init(this, "替換為Appkey,服務(wù)后臺(tái)位置:應(yīng)用管理 -> 應(yīng)用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替換為秘鑰信息,服務(wù)后臺(tái)位置:應(yīng)用管理 -> 應(yīng)用信息 -> Umeng Message Secret");
//獲取消息推送代理示例
PushAgent mPushAgent = PushAgent.getInstance(this);
//注冊(cè)推送服務(wù),每次調(diào)用register方法都會(huì)回調(diào)該接口
mPushAgent.register(new IUmengRegisterCallback() {
? @Override
? public void onSuccess(String deviceToken) {
? ? //注冊(cè)成功會(huì)返回deviceToken deviceToken是推送消息的唯一標(biāo)志
? ? Log.i(TAG,"注冊(cè)成功:deviceToken:-------->? " + deviceToken);
? }
? @Override
? public void onFailure(String s, String s1) {
? ? Log.e(TAG,"注冊(cè)失?。?------->? " + "s:" + s + ",s1:" + s1);
? }
});

deviceToken是【友盟+】消息推送生成的用于標(biāo)識(shí)設(shè)備的id,長(zhǎng)度為44位,不能定制和修改。同一臺(tái)設(shè)備上不同應(yīng)用對(duì)應(yīng)的deviceToken不一樣。獲取deviceToken的值后,可進(jìn)行消息推送測(cè)試!
2).應(yīng)用數(shù)據(jù)統(tǒng)計(jì)接口
在所有的Activity 的onCreate 方法或在應(yīng)用的BaseActivity的onCreate方法中添加:
PushAgent.getInstance(context).onAppStart();
注:該方法是【友盟+】Push后臺(tái)進(jìn)行日活統(tǒng)計(jì)及多維度推送的必調(diào)用方法,請(qǐng)務(wù)必調(diào)用!
4.消息推送測(cè)試
順利獲取deviceToken!我們馬上可以向這臺(tái)設(shè)備推送消息了~
添加測(cè)試設(shè)備:
在【友盟+】消息推送服務(wù)Push后臺(tái)的“測(cè)試模式”中填寫獲取到的deviceToken,將該設(shè)備添加為測(cè)試設(shè)備:


在測(cè)試消息中新建消息,詳細(xì)過(guò)程如下所示,詳細(xì)過(guò)程如下所示:

5.接入完成
此時(shí)在您的測(cè)試手機(jī)上可以看到您剛才的推送消息!
