友盟推送(U-Push)集成、踩坑和解決與阿里云系列產(chǎn)品的依賴沖突

上一篇博客講到接入阿里云移動(dòng)推送,這一篇一起來看一下友盟的推送。友盟作為行業(yè)內(nèi)較早做推送的第三方,在推送方面經(jīng)驗(yàn)還是比較雄厚的,并且友盟對(duì)外宣稱,友盟可以使用共享通道推送,也就是說,假如手機(jī)上裝了別的應(yīng)用也使用了友盟推送,當(dāng)自己的App后臺(tái)進(jìn)程殺死的情況下,推送會(huì)利用別的app推送消息。我看了一下友盟的源碼,代碼里做了判斷,當(dāng)書籍上的app使用了淘寶的包名,或者淘寶和頭條的域名,就可以使用共享渠道,我自己也專門做了測(cè)試,確實(shí)可以收到,但是接受率不高。那么接下來我們就來看一下友盟推送的接入,本篇博客集成友盟最新版6.0.1。

首先來說一下友盟推送和阿里系的依賴沖突吧?。。。?/strong>由于他們都是用了阿里的基礎(chǔ)工具類依賴包,所以當(dāng)項(xiàng)目中同時(shí)接入了友盟推送和阿里系的第三方,那么及有可能會(huì)因?yàn)? com.umeng.umsdk:utdid 這個(gè)依賴導(dǎo)致沖突,友盟官方給的解決方案是采用手動(dòng)接入,替換掉依賴沖突的部分,但是我個(gè)人接入時(shí)還是有同樣的沖突,我這邊的解決方案是使用:

exclude(module: 'alicloud-android-ut')
exclude(module: 'alicloud-android-utdid')
exclude(module: 'alicloud-android-utils')

例如我這邊阿里云熱修復(fù)和友盟推送有依賴沖突,解決辦法是(重點(diǎn)):

compile('com.aliyun.ams:alicloud-android-hotfix:3.2.8') {
        exclude(module: 'alicloud-android-ut')
        exclude(module: 'alicloud-android-utdid')
        exclude(module: 'alicloud-android-utils')
    }

這樣就可以過濾重復(fù)依賴,不會(huì)影響熱修復(fù)功能。具體有不明白的小伙伴可以評(píng)論留言向我詢問,接下來就講一下友盟Push的接入流程:

一. Appkey申請(qǐng)

請(qǐng)?jiān)?a target="_blank">U-Push官網(wǎng)為您的應(yīng)用申請(qǐng)Appkey(詳細(xì)操作路徑:U-Push官網(wǎng)->應(yīng)用->新建應(yīng)用->創(chuàng)建新應(yīng)用)

注:已經(jīng)使用了【友盟+】統(tǒng)計(jì)的用戶,請(qǐng)從U-Push官網(wǎng)從已有應(yīng)用中添加關(guān)聯(lián)。

獲取應(yīng)用對(duì)應(yīng)的AppkeyUmeng Message Secret,這兩個(gè)值請(qǐng)務(wù)必留意,在后續(xù)SDK初始化中需要用到。

二. 接入友盟Push SDK

在您的Android Studio工程的App模塊的build.gradle配置腳本中添加maven遠(yuǎn)程依賴,導(dǎo)入最新版本PushSDK:

請(qǐng)查看您項(xiàng)目中com.android.tools.build:gradle配置,如果版本號(hào)<3.0.0,也就是Android Studio版本<3.0.0,請(qǐng)使用如下配置腳本添加遠(yuǎn)程依賴:

//PushSDK必須依賴基礎(chǔ)組件庫(kù),所以需要加入對(duì)應(yīng)依賴
compile 'com.umeng.umsdk:common:1.5.4'
//PushSDK必須依賴utdid庫(kù),所以需要加入對(duì)應(yīng)依賴
compile 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
compile 'com.umeng.umsdk:push:6.0.1'

請(qǐng)查看您項(xiàng)目中com.android.tools.build:gradle配置,如果版本號(hào)>=3.0.0,也就是Android Studio版本>=3.0.0,請(qǐng)使用如下配置腳本添加遠(yuǎn)程依賴:

//PushSDK必須依賴基礎(chǔ)組件庫(kù),所以需要加入對(duì)應(yīng)依賴
implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必須依賴utdid庫(kù),所以需要加入對(duì)應(yīng)依賴
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:6.0.1'

在工程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' }
    }
}

三. 基礎(chǔ)接口引入

1、務(wù)必在工程的自定義Application類的 onCreate() 方法中做SDK代碼初始化工作。

// 在此處調(diào)用基礎(chǔ)組件包提供的初始化函數(shù) 相應(yīng)信息可在應(yīng)用管理 -> 應(yīng)用信息 中找到 http://message.umeng.com/list/apps
// 參數(shù)一:當(dāng)前上下文context;
// 參數(shù)二:應(yīng)用申請(qǐng)的Appkey(需替換);
// 參數(shù)三:渠道名稱;
// 參數(shù)四:設(shè)備類型,必須參數(shù),傳參數(shù)為UMConfigure.DEVICE_TYPE_PHONE則表示手機(jī);傳參數(shù)為UMConfigure.DEVICE_TYPE_BOX則表示盒子;默認(rèn)為手機(jī);
// 參數(shù)五:Push推送業(yè)務(wù)的secret 填充Umeng Message Secret對(duì)應(yīng)信息(需替換)
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");

2、Push注冊(cè)在UMConfigure.init方法之后注冊(cè),注冊(cè)成功后可獲取deviceToken,進(jìn)行消息下發(fā)。調(diào)用代碼如下所示:


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è)試!

四.應(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)用!

接到這里友盟推送就算初步完成了,那么接下來就是在友盟的后臺(tái)測(cè)試消息推送了,獲取deviceToken!我們馬上可以向這臺(tái)設(shè)備推送消息了。

添加測(cè)試設(shè)備:

在【友盟+】消息推送服務(wù)Push后臺(tái)的“測(cè)試模式”中填寫獲取到的deviceToken,將該設(shè)備添加為測(cè)試設(shè)備:

?

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


和阿里云推送相同,僅接入這些只能滿足一般的推送,當(dāng)App的進(jìn)程殺死后,手機(jī)就收不到推送了,那么這時(shí)可以通過廠商渠道來補(bǔ)充,那么下面我們就來看一看廠商渠道的接入,友盟現(xiàn)在支持華為、小米、oppo、vivo和魅族的廠商渠道,不得不說友盟在推送方面走的還是比較靠前的。

華為Push通道使用教程

創(chuàng)建應(yīng)用

登錄【華為開發(fā)者聯(lián)盟】https://developer.huawei.com/consumer/cn/

進(jìn)入管理中心,點(diǎn)擊PUSH

申請(qǐng)PUSH服務(wù)

?填寫相關(guān)信息

?點(diǎn)擊提交,會(huì)顯示您已經(jīng)開通Push服務(wù)

點(diǎn)擊應(yīng)用名稱,查看應(yīng)用的app id和app secret。

華為廠商通道配置回執(zhí)

集成華為廠商通道SDK后,需要在華為后臺(tái)配置消息回執(zhí)才可以正常取到通過華為通道下發(fā)消息的收到數(shù)等數(shù)據(jù),配置成功后,消息回執(zhí)位置會(huì)顯示如下信息:

操作方法:

  1. 進(jìn)入華為Push服務(wù)后臺(tái),點(diǎn)擊“操作-修改”進(jìn)入設(shè)置PUSH服務(wù)信息頁(yè)面
  2. 在“消息回執(zhí)”區(qū)域中,選擇開通回執(zhí),并分別在“回調(diào)地址”和“HTTPS證書”里輸入以下內(nèi)容

回調(diào)地址:

https://agoo-ack.m.taobao.com/hw/

HTTPS證書:

-----BEGIN CERTIFICATE-----
MIIEaTCCA1GgAwIBAgILBAAAAAABRE7wQkcwDQYJKoZIhvcNAQELBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
MDBaFw0yNDAyMjAxMDAwMDBaMGYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMTwwOgYDVQQDEzNHbG9iYWxTaWduIE9yZ2FuaXphdGlvbiBW
YWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDHDmw/I5N/zHClnSDDDlM/fsBOwphJykfVI+8DNIV0yKMCLkZc
C33JiJ1Pi/D4nGyMVTXbv/Kz6vvjVudKRtkTIso21ZvBqOOWQ5PyDLzm+ebomchj
SHh/VzZpGhkdWtHUfcKc1H/hgBKueuqI6lfYygoKOhJJomIZeg0k9zfrtHOSewUj
mxK1zusp36QUArkBpdSmnENkiN74fv7j9R7l/tyjqORmMdlMJekYuYlZCa7pnRxt
Nw9KHjUgKOKv1CGLAcRFrW4rY6uSa2EKTSDtc7p8zv4WtdufgPDWi2zZCHlKT3hl
2pK8vjX5s8T5J4BO/5ZS5gIg4Qdz6V0rvbLxAgMBAAGjggElMIIBITAOBgNVHQ8B
Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUlt5h8b0cFilT
HMDMfTuDAEDmGnwwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0
dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCow
KKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYB
BQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNv
bS9yb290cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZI
hvcNAQELBQADggEBAEYq7l69rgFgNzERhnF0tkZJyBAW/i9iIxerH4f4gu3K3w4s
32R1juUYcqeMOovJrKV3UPfvnqTgoI8UV6MqX+x+bRDmuo2wCId2Dkyy2VG7EQLy
XN0cvfNVlg/UBsD84iOKJHDTu/B5GqdhcIOKrwbFINihY9Bsrk8y1658GEV1BSl3
30JAZGSGvip2CTFvHST0mdCF/vIhCPnG9vHQWe3WVjwIKANnuvD58ZAWR65n5ryA
SOlCdjSXVWkkDoPWoC209fN5ikkodBpBocLTJIg1MGCUF7ThBCIxPTsvFwayuJ2G
K1pp74P1S8SqtCr4fKGxhZSM9AyHDPSsQPhZSZg=
-----END CERTIFICATE-----

點(diǎn)擊“測(cè)試回執(zhí)”,提示“測(cè)試成功”則表示配置成功

特別強(qiáng)調(diào):以上的回調(diào)地址和HTTPS證書一定要配置,而且要配置成功,否則,華為廠商渠道的推送時(shí)收不到推送消息的。

配置華為Push的AppID和Secret

在【友盟+】新版推送后臺(tái)http://message.umeng.com的【應(yīng)用管理】【應(yīng)用信息】里的華為AppID和華為Secret處填上華為Push的AppID和Secret。

導(dǎo)入華為Push通道SDK

通過在Android Studio工程的app模塊的build.gradle配置腳本中添加maven遠(yuǎn)程依賴,導(dǎo)入華為Push通道SDK。

//華為Push通道
implementation 'com.umeng.umsdk:huawei-basetb:2.6.3.305'
implementation 'com.umeng.umsdk:huawei-pushtb:2.6.3.305'
implementation 'com.umeng.umsdk:huawei-umengaccs:1.2.1’

華為Push初始化

在Application類的onCreate方法中添加:

HuaWeiRegister.register(final Context context);

注冊(cè)成功后會(huì)在tag:HuaWeiReceiver下面打印log: 獲取token成功,token= xxxxxxxxxxxxxxxxxxxxxxx接收到華為消息則會(huì)打印log: HuaWeiReceiver,content= xxxxxxxxxxxxxxxxxxxxxxx

注意:

  • 僅在華為EMUI設(shè)備上生效。
  • 集成華為Push的版本暫不支持多包名。
  • 當(dāng)EMUI版本為8.0且App的targetSdkVersion為26及以上時(shí),設(shè)備會(huì)無法彈出通知。這種情況下,請(qǐng)升級(jí)EMUI的系統(tǒng)版本,或?qū)pp的targetSdkVersion設(shè)置為25或25以下。

配置華為AppID

需要在AndroidManifest.xml中配置AppID,其中xxxxxx為華為應(yīng)用的AppID

<meta-data
    android:name="com.huawei.hms.client.appid"
    android:value="appid=xxxxxx" />

使用華為彈窗功能

華為對(duì)后臺(tái)進(jìn)程做了諸多限制。若使用一鍵清理,應(yīng)用的channel進(jìn)程被清除,將接收不到推送。為了增加推送的送達(dá)率,可選擇接入華為托管彈窗功能。通知將由華為系統(tǒng)托管彈出,點(diǎn)擊通知欄將跳轉(zhuǎn)到指定的Activity。該Activity需繼承自UmengNotifyClickActivity,同時(shí)實(shí)現(xiàn)父類的onMessage方法,對(duì)該方法的intent參數(shù)進(jìn)一步解析即可,該方法異步調(diào)用,不阻塞主線程。示例如下:

public class MipushTestActivity extends UmengNotifyClickActivity {

    private static String TAG = MipushTestActivity.class.getName();

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_mipush);
    }

    @Override
    public void onMessage(Intent intent) {
        super.onMessage(intent);  //此方法必須調(diào)用,否則無法統(tǒng)計(jì)打開數(shù)
        String body = intent.getStringExtra(AgooConstants.MESSAGE_BODY);
        Log.i(TAG, body);
    }
}

然后在AndroidManifest.xml中配置該Activity,并設(shè)置launchMode=”singleTask”和exported=”true”:

<activity
      android:name="com.umeng.message.example.MipushTestActivity"
      android:launchMode="singleTask"
      android:exported="true" />

在【友盟+】推送后臺(tái)發(fā)送通知時(shí),勾選若設(shè)備離線轉(zhuǎn)為系統(tǒng)通道下發(fā),并填寫Activity的完整包路徑(該Activity需繼承自UmengNotifyClickActivity)。

注意:

  • 對(duì)于EMUI 4.1及以下版本系統(tǒng),若要使用華為彈窗功能,則需在華為設(shè)備上的【手機(jī)管家】App中,開啟應(yīng)用的“自啟動(dòng)權(quán)限”。
  • 使用華為通道下發(fā)的通知,需要在華為后臺(tái)配置消息回執(zhí)才可以正常統(tǒng)計(jì)到華為通道下發(fā)消息的【收到數(shù)】。
  • 在調(diào)用API接口實(shí)現(xiàn)推送消息時(shí),如果需要使用華為彈窗,需添加(與小米彈窗字段相同):
"mipush":true
"mi_activity":"com.umeng.message.example.MipushTestActivity"        //此處請(qǐng)?zhí)顚慉ctivity完整包路徑

API接口添加位置參考:

{
"appkey": "",
"mi_activity": "com.umeng.message.example.MipushTestActivity"
"mipush": true,
"timestamp": 1473225266373,
"production_mode": "true",
"type": "unicast",
"device_tokens": "",
"payload":
    {"body":
       {"text": "from pa36a",
        "after_open": "go_app",
        "ticker": "Hello World",
        "title": "listcastpa43"
       }, 
     "display_type": "notification",
    }
}

接下來的就是小米、oppo、vivo和魅族的廠商渠道接入,基本上和華為的接入是一致的,但是比華為稍微簡(jiǎn)單一些。各個(gè)廠商渠道接入具體可以參考:廠商通道集成文檔

以上是友盟推送和廠商渠道接入全部,那么我們?cè)?strong>項(xiàng)目中要實(shí)現(xiàn)定向推送到某一個(gè)客戶,使用deviceToken是根據(jù)設(shè)配來推送的,那么在友盟推送的高級(jí)功能集成文檔 中提供了別名的綁定和設(shè)置Tag,這樣我們就可以將用戶的userId或者Token作為別名和tag來進(jìn)行綁定,這樣就可以給指定的用戶發(fā)送消息了,而不是通過設(shè)備號(hào)。

具體的步驟是:

  • 客戶端開發(fā)者在應(yīng)用內(nèi)調(diào)用 addTags 或者 addAlias來設(shè)置對(duì)應(yīng)關(guān)系;
  • 【友盟+】消息后臺(tái)存儲(chǔ)相應(yīng)的關(guān)系設(shè)置;
  • 在服務(wù)器端推送消息時(shí),指定向之前設(shè)置過的別名或者標(biāo)簽推送。

1、增加、刪除、查詢標(biāo)簽;

//添加標(biāo)簽 示例:將“標(biāo)簽1”、“標(biāo)簽2”綁定至該設(shè)備
mPushAgent.getTagManager().addTags(new TagManager.TCallBack() {

    @Override
    public void onMessage(final boolean isSuccess, final ITagManager.Result result) {

    }

},"標(biāo)簽1",, "標(biāo)簽2");
//刪除標(biāo)簽,將之前添加的標(biāo)簽中的一個(gè)或多個(gè)刪除
mPushAgent.getTagManager().deleteTags(new TagManager.TCallBack() {

    @Override
    public void onMessage(final boolean isSuccess, final ITagManager.Result result) {

    }

},"標(biāo)簽1",, "標(biāo)簽2");
//獲取服務(wù)器端的所有標(biāo)簽
mPushAgent.getTagManager().getTags(new TagManager.TagListCallBack() {

    @Override
    public void onMessage(boolean isSuccess, List<String> result) {

    }

});

注意:

  • tag名稱請(qǐng)不要加入U(xiǎn)RL Encode等變換處理,請(qǐng)使用原生字符串。
  • 目前每個(gè)用戶tag限制在1024個(gè), 每個(gè)tag 最大128字符。

2、增加、刪除、查詢別名:

//別名增加,將某一類型的別名ID綁定至某設(shè)備,老的綁定設(shè)備信息還在,別名ID和device_token是一對(duì)多的映射關(guān)系
mPushAgent.addAlias("別名ID", "自定義類型", new UTrack.ICallBack() {

    @Override
    public void onMessage(boolean isSuccess, String message) {

    }

});
//別名綁定,將某一類型的別名ID綁定至某設(shè)備,老的綁定設(shè)備信息被覆蓋,別名ID和deviceToken是一對(duì)一的映射關(guān)系
mPushAgent.setAlias("別名ID", "自定義類型", new UTrack.ICallBack() {

    @Override
    public void onMessage(boolean isSuccess, String message) {

    }

});
//移除別名ID
mPushAgent.deleteAlias("別名ID", "自定義類型", new UTrack.ICallBack() {

    @Override
    public void onMessage(boolean isSuccess, String message) {

    }

});

注意:

  • 若要使用新的alias,請(qǐng)先調(diào)用deleteAlias接口移除掉舊的alias,再調(diào)用addAlias添加新的alias;
  • 設(shè)置alias時(shí)需要指定該alias對(duì)應(yīng)的類型(alias type),例如:自有id、新浪微博、騰訊微博、豆瓣等;
  • alias名稱請(qǐng)不要使用URLEncode等變換處理,請(qǐng)使用原生字符串;
  • alias的綁定是需要獲取到deviceToken為前提的,最好是在注冊(cè)即enable的回調(diào)接口中進(jìn)行alias的綁定,此時(shí)可以保證獲取到deviceToken;
  • alias原有的addExclusiveAlias和removeAlias接口均已廢棄,請(qǐng)使用新接口

收到推送后,都會(huì)有點(diǎn)擊事件,那么友盟也給我們提供了推送點(diǎn)擊回調(diào)方法,請(qǐng)將此方法放在Application中:

UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
      //打開activity
      @Override
      public void openActivity(Context context, UMessage uMessage) {
      }

      //傳遞鏈接
      @Override
      public void openUrl(Context context, UMessage uMessage) {
        System.out.println("傳遞的url:" + uMessage.url);
        Intent intent = new Intent(context, WebViewMineActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("url", uMessage.url);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
      }

      //打開App
      @Override
      public void launchApp(Context context, UMessage uMessage) {
        UMessage uMessage1 = uMessage;
        if (uMessage != null && uMessage.extra != null) {
          String jumpUrl = uMessage.extra.get("url");
          PushJumpUtils.pushJump(jumpUrl, context, isAppRunning());
        }else {
          if (!isAppRunning()){
            Intent intent = new Intent(context, AppStartActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            context.startActivity(intent);
          }
        }
      }

      //自定義點(diǎn)擊事件
      @Override
      public void dealWithCustomAction(Context context, UMessage msg) {
      }
    };
    mPushAgent.setNotificationClickHandler(notificationClickHandler);
  }

點(diǎn)擊推送回調(diào)有四個(gè)方法,分別針對(duì)喚醒App、跳轉(zhuǎn)到相應(yīng)的Activit、跳轉(zhuǎn)到網(wǎng)頁(yè)和自定義跳轉(zhuǎn)的方法。

以上就是友盟推送接入的所有內(nèi)容和注意事項(xiàng),其中別名的設(shè)置、推送點(diǎn)擊大家一定要注意。其中友盟的Maven依賴會(huì)和阿里云熱修復(fù)、oss的依賴有沖突,這個(gè)我在文章的開篇有將,請(qǐng)大家查看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容