Android被初耍活距贷,殺死app后收到推送,推送收不到

Android蔽悄保活忠蝗,殺死app后收到推送,推送收不到漓拾。

其實(shí)指向的都是一個(gè)問題阁最,殺死app后,我還要能收到推送骇两。

用阿里推送的輔助通道功能可以實(shí)現(xiàn)

https://help.aliyun.com/document_detail/30067.html?spm=a2c4g.11186623.6.590.598b7fa8XmiUlS#h2-7-

輔助通道一般只接入速种,小米,華為低千,oppo配阵,vivo,魅族這5個(gè)廠商的示血,

其中的一些廠商需要額外的依賴闸餐。

阿里的文檔沒有給出正確的依賴,

正確的矾芙,包含5大廠商的依賴如下:

api 'com.aliyun.ams:alicloud-android-push:3.1.9@aar'

api 'com.aliyun.ams:alicloud-android-utils:1.1.5'

api 'com.aliyun.ams:alicloud-android-beacon:1.0.3'

api 'com.aliyun.ams:alicloud-android-ut:5.4.3'

api 'com.aliyun.ams:alicloud-android-third-push:3.0.8@aar'

api 'com.aliyun.ams:huawei-push:2.6.3.305'

api 'com.aliyun.ams:huawei-push-base:2.6.3.305'

api 'com.aliyun.ams:meizu-push:3.8.3-fix'

阿里sdk的使用主要通過這個(gè)類

public class PushService {

private static boolean IS_INIT_PUSH = false;

/**

* 初始化云推送通道

*

* @param applicationContext

*/

public static void registerPushService(Context applicationContext) {

PushServiceFactory.init(applicationContext);

final CloudPushService pushService = PushServiceFactory.getCloudPushService();

// pushService.setDebug(BuildConfig.DEBUG);

if (!IS_INIT_PUSH){

pushService.register(applicationContext, new CommonCallback() {

@Override

public void onSuccess(String response) {

Log.d("Push", "init cloudchannel success "+response);

IS_INIT_PUSH = true;

pushServiceBindAccount(applicationContext);

}

@Override

public void onFailed(String errorCode, String errorMessage) {

Log.d("Push", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);

}

});

}

}

public static void pushServiceBindAccount(Context applicationContext) {

final CloudPushService pushService = PushServiceFactory.getCloudPushService();

String token = String.valueOf(PAccountManage.INSTANCE.getSp().getAccountId());

//需要綁定到賬號(hào)

if (IS_INIT_PUSH && !TextUtils.isEmpty(token)) {

pushService.bindAccount(token, new CommonCallback() {

@Override

public void onSuccess(String s) {

Log.d("Push", "bindAccount onSuccess");

initThirdPush(applicationContext);

}

@Override

public void onFailed(String s, String s1) {

Log.d("Push", "bindAccount onFailed");

}

});

}else {

Log.d("Push", "bindAccount onFailed2");

}

}

public static void pushServiceUnBindAccount(Context applicationContext) {

final CloudPushService pushService = PushServiceFactory.getCloudPushService();

if (IS_INIT_PUSH){

pushService.unbindAccount(new CommonCallback() {

@Override

public void onSuccess(String s) {

Log.d("Push", "unbindAccount onSuccess");

unRegisterThirdPush(applicationContext);

}

@Override

public void onFailed(String s, String s1) {

Log.d("Push", "unbindAccount onFailed");

}

});

}else {

Log.d("Push", "unbindAccount onFailed2");

}

}

private static void initThirdPush(Context applicationContext) {

// 注冊方法會(huì)自動(dòng)判斷是否支持小米系統(tǒng)推送舍沙,如不支持會(huì)跳過注冊。

MiPushRegister.register(applicationContext, "", "");

// 注冊方法會(huì)自動(dòng)判斷是否支持華為系統(tǒng)推送剔宪,如不支持會(huì)跳過注冊拂铡。

HuaWeiRegister.register((Application)applicationContext );

//GCM/FCM輔助通道注冊

// GcmRegister.register(applicationContext, "", ""); //sendId/applicationId為步驟獲得的參數(shù)

// OPPO通道注冊

OppoRegister.register(applicationContext, "", ""); // appKey/appSecret在OPPO通道開發(fā)者平臺(tái)獲取

// VIVO通道注冊

VivoRegister.register(applicationContext);

//魅族

MeizuRegister.register(applicationContext, "", ""); // appId/appkey在魅族開發(fā)者平臺(tái)獲取

}

private static void unRegisterThirdPush(Context applicationContext){

MiPushRegister.unregister(applicationContext);

// HuaWeiRegister.registerBundle((Application)applicationContext ,false);

OppoRegister.unregister(); // appKey/appSecret在OPPO通道開發(fā)者平臺(tái)獲取

VivoRegister.unregister();

// MeizuRegister.register(applicationContext, "", ""); // appId/appkey在魅族開發(fā)者平臺(tái)獲取

}

}

打開app需要初始化阿里sdk,Application里:

override fun onCreate() {

initPushModule()

}

private fun initPushModule() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

PushManager.initChannel()

}

if ( (isMainProcess(this@ParentApp) || isTargetProcess(this@ParentApp, "${applicationContext.packageName}:channel"))) {

PushService.registerPushService(this@ParentApp)

}

}

用戶登錄時(shí)調(diào)用:

PushService.pushServiceBindAccount(this)

退出登錄時(shí)調(diào)用:

PushService.pushServiceUnBindAccount(this)

創(chuàng)建通道的代碼:

// 通知渠道的id

var mChannelId = "aierman"

// 用戶可以看到的通知渠道的名字.

private var mChannelName = "哈嘍蘿博推送通知"

// 用戶可以看到的通知渠道的描述

private var mChannelDescription = "哈嘍蘿博推推送通知"

fun initChannel() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

val notificationManager = BaseApp.app.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

val channel = NotificationChannel(mChannelId, mChannelName, NotificationManager.IMPORTANCE_HIGH)

// 配置通知渠道的屬性

channel.description = mChannelDescription

// 設(shè)置通知出現(xiàn)時(shí)的閃燈(如果 android 設(shè)備支持的話)

channel.enableLights(true)

channel.lightColor = Color.RED

// 設(shè)置通知出現(xiàn)時(shí)的震動(dòng)(如果 android 設(shè)備支持的話)

channel.enableVibration(true)

channel.vibrationPattern = longArrayOf(100, 200, 300, 400, 500, 400, 300, 200, 400)

// 設(shè)置通知出現(xiàn)時(shí)聲音葱绒,默認(rèn)通知是有聲音的

channel.setSound(Settings.System.DEFAULT_NOTIFICATION_URI, Notification.AUDIO_ATTRIBUTES_DEFAULT);

channel.setShowBadge(true)//打開腳標(biāo)

notificationManager.createNotificationChannel(channel)

}

}

別忘了在清單文件加入以下配置:

<meta-data

android:name="com.huawei.hms.client.appid"

android:value="" />

<meta-data

android:name="com.vivo.push.api_key"

android:value="" />

<meta-data

android:name="com.vivo.push.app_id"

android:value="" />

<meta-data

android:name="com.alibaba.app.appkey"

android:value="" /> <!-- 阿里推送 appSecret -->

<meta-data

android:name="com.alibaba.app.appsecret"

android:value="" /> <!-- 消息接收監(jiān)聽器 (用戶可自主擴(kuò)展) -->

<activity

android:name="com.hellorobotedu.aiparent.push.PopupPushActivity"

android:exported="true"/>

對(duì)于PopupPushActivity感帅,記得:

class PopupPushActivity : AndroidPopupActivity()

最后一定要記得在阿里推送控制臺(tái)的應(yīng)用配置,配置你各個(gè)手機(jī)廠商的key地淀,不然輔助通道不會(huì)生效失球。

坑:

1.華為,記得配置SHA256帮毁,不然輔助通道不生效見圖

image.png

2.推送不到達(dá)的意外情況處理:

(1).殺死app后立即進(jìn)行推送是收不到的实苞,因?yàn)榘⒗锬沁叢恢繿pp已經(jīng)死了,

輔助彈窗和正式通道都推不過來烈疚。

比如殺死app后立即推送了一個(gè)“推送a”黔牵,那app肯定是收不到的,

那只能等下一次有效的推送(有效指的是離殺死app的時(shí)間足夠久的推送)爷肝,比如“推送b”猾浦,

“推送b”推送了之后陆错,“推送a”和”推送b”才可以一起收到.

(2).切換賬號(hào)問題,

舉例金赦,我已經(jīng)在oppo手機(jī)登錄音瓷,殺死app,

再在小米手機(jī)登錄夹抗,再殺死app

那么再次推送還是會(huì)推到oppo绳慎,因?yàn)閛ppo和阿里的綁定沒有解除,

如何解除?在oppo上執(zhí)行退出登錄兔朦,或者在小米手機(jī)上運(yùn)行app足夠久偷线。

end

如果你覺得這篇文章對(duì)你有所幫助磨确,不妨點(diǎn)一個(gè)贊沽甥,作者會(huì)非常高興的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乏奥,一起剝皮案震驚了整個(gè)濱河市摆舟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邓了,老刑警劉巖恨诱,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骗炉,居然都是意外死亡照宝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門句葵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厕鹃,“玉大人,你說我怎么就攤上這事乍丈〖敛辏” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵轻专,是天一觀的道長忆矛。 經(jīng)常有香客問我,道長请垛,這世上最難降的妖魔是什么催训? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮宗收,結(jié)果婚禮上瞳腌,老公的妹妹穿的比我還像新娘。我一直安慰自己镜雨,他們只是感情好嫂侍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布儿捧。 她就那樣靜靜地躺著,像睡著了一般挑宠。 火紅的嫁衣襯著肌膚如雪菲盾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天各淀,我揣著相機(jī)與錄音懒鉴,去河邊找鬼。 笑死碎浇,一個(gè)胖子當(dāng)著我的面吹牛临谱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奴璃,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼悉默,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苟穆?” 一聲冷哼從身側(cè)響起抄课,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雳旅,沒想到半個(gè)月后跟磨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攒盈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年抵拘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片型豁。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僵蛛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出偷遗,到底是詐尸還是另有隱情墩瞳,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布氏豌,位于F島的核電站喉酌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泵喘。R本人自食惡果不足惜泪电,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纪铺。 院中可真熱鬧相速,春花似錦、人聲如沸鲜锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旺隙,卻和暖如春绒极,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔬捷。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工垄提, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人周拐。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓铡俐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妥粟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子审丘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348