亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MobPush?Android常見問題解決分析

 更新時間:2023年07月11日 11:58:42   作者:MobTech袤博  
這篇文章主要介紹了MobPush?Android常見問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

常見問題

配置了默認(rèn)點(diǎn)擊跳轉(zhuǎn)界面,對所有通道都有效嗎

只對MobPush、魅族、小米、華為、OPPO、VIVO通道有效,對FCM通道無效。

如何獲取回調(diào)參數(shù)

  • 進(jìn)程存活的情況下,可在我們的回調(diào)監(jiān)聽中看到通知詳情,可以根據(jù)回調(diào)參數(shù)進(jìn)行處理。 詳情請查看 API接口->推送監(jiān)聽接口。
  • 進(jìn)程被殺情況下,回調(diào)監(jiān)聽不可用,但點(diǎn)擊通知后拉起應(yīng)用的啟動頁面,會觸發(fā)啟動Activity的onCreate或onNewIntent,通過getIntent拿到回傳的Intent,可以拿到通知詳情。
  • 注:PushSDK提供了解析方法來獲取回調(diào)參數(shù),但廠商通知主要是獲取附加字段,不會把所有信息都解析出來。 跳轉(zhuǎn)首頁獲取參數(shù)
JSONArray jsonArray =  MobPushUtils.parseMainPluginPushIntent(getIntent());
System.out.println("-------------JsonPushData打印查看:"+jsonArray);

返回說明

返回字段說明
"id":"4bu9702gmq4mvl3myo"id通知任務(wù)id ,僅廠商通知有該字段
{"key":"value"}附加字段附件字段需指定,不指定不會出現(xiàn) ,僅廠商通知有該字段
{"from_tcp":true}from_tcp消息是否來自MobPushTCP通道,true:是
{"msg":"MobPushNotifyMessage{}"}msg消息體,對象為MobPushNotifyMessage,僅MobPushTCP通道消息有該字段
{"channel":"mobpush"}channel渠道名

2.2 scheme跳轉(zhuǎn)獲取參數(shù),詳情請查看 API接口->scheme跳轉(zhuǎn)

JSONArray jsonArray = MobPushUtils.parseSchemePluginPushIntent(getIntent());
System.out.println("-------------JsonScheme打印查看:"+jsonArray);

返回說明

返回字段說明
{"from_tcp":true}from_tcp消息是否來自MobPushTCP通道,true:是
{"msg":"MobPushNotifyMessage{}"}msg消息體,對象為MobPushNotifyMessage,僅MobPushTCP通道消息有該字段
{"key":"value"}附加字段附件字段需指定,建議不要使用url做為key
{"mobpush_link_k":"mlink://com.mob.mobpush.link"}schemescheme地址
{"mobpush_link_v":"schemeKey=schemeValue"}scheme參數(shù)scheme地址下攜帶的scheme參數(shù)
{"id":"4brfm8nti9aj1arf28"}id推送任務(wù)id
{"channel":"xiaomi"}channel渠道名
{"schemeLink":"mlink://com.mobpush.demo2"}schemescheme地址
{"schemeKey":"schemeValue"}scheme參數(shù)scheme地址下攜帶的scheme參數(shù)(華為,VIVO,OPPO)
{"schemeKey":"schemeValue","schemeUrl":"mlink://com.mob.mobpush.link"}schemeUrlscheme地址下攜帶的scheme參數(shù)(flyme)

3.如不使用PushSDK提供的解析方法,可參考以下方法獲取回調(diào)參數(shù)

private void dealPushResponse(Intent intent) {
        Bundle bundle = null;
        if (intent != null) {
            bundle = intent.getExtras();
            if (bundle == null) {
                Log.e("PushResponse","bundle的值為空"+bundle);
                return;
            }
            else {
                Set<String> keySet = bundle.keySet();
                if (keySet == null || keySet.isEmpty()) {
                    return;
                }
                for (String key  : keySet) {
                    //通過key獲取bundle中的key對應(yīng)的值。就是附加數(shù)據(jù)了
                    Log.e("PushResponse","bundlekey===========================點(diǎn)擊信息"+key);
                }
                Log.e("PushResponse","bundle===========================點(diǎn)擊信息"+bundle.toString());
            }
        }
    }

OPPO推送時按全部人群進(jìn)行推送,為什么有的OPPO設(shè)備接收不到

因為OPPO推送對應(yīng)全部人群這種全量推送是有個時間限制規(guī)則的,當(dāng)全量推送時當(dāng)天新注冊的OPPO設(shè)備是不生效的,第二天才生效,被全量推送計算在目標(biāo)設(shè)備組中,T+1規(guī)則。 而對應(yīng)單一OPPO設(shè)備推送時,沒有T+1規(guī)則限制,注冊成功即立即生效。

廠商推送打開通知都會有回調(diào)嗎

不是都有回調(diào),OPPO推送沒有接收通知和打開通知的回調(diào);FCM推送在應(yīng)用處于后臺時或者應(yīng)用進(jìn)程被殺掉時沒有接收通知和打開通知的回調(diào)。

應(yīng)用在前臺時,MobPush通道推送接收不到

應(yīng)用在前臺時,MobPush通道推送接收不到,請按照以下步驟檢查:

1.檢查手機(jī)網(wǎng)絡(luò)是否正常

2.檢查手機(jī)通知權(quán)限是否打開

3.是否在通知欄不重要的通知里

4.檢查應(yīng)用配置是否正確

調(diào)用MobPush.setClickNotificationToLaunchMainActivity(),設(shè)置為false,點(diǎn)擊通知不啟動主頁,為什么設(shè)置后,沒有起作用

此方法不是對所有通道都起作用,目前只對MobPush通道、魅族通道、小米通道起作用,對于華為通道、OPPO通道、FCM通道來說,由于各個廠商不同實(shí)現(xiàn)的原因,是否調(diào)用此方式都不影響這三個通道,默認(rèn)都是啟動主頁。

OPPO和VIVO設(shè)備通知權(quán)限開關(guān)問題

OPPO:

在未接入OPPO PUSH前,應(yīng)用的通知欄權(quán)限是默認(rèn)關(guān)閉狀態(tài); 接入OPPO PUSH后,ColorOS3.1至5.0版本的OPPO手機(jī),用戶激活了相關(guān)應(yīng)用后,通知欄權(quán)限會默認(rèn)打開。特別說明,若用戶在使用舊版本應(yīng)用(未集成OPPO PUSH),手動將應(yīng)用的通知欄權(quán)限進(jìn)行了關(guān)閉,則只有用戶手動卸載舊版本應(yīng)用,再安裝新版本(集成OPPO PUSH)并激活,通知欄才會默認(rèn)打開。采用覆蓋安裝的方式,通知欄權(quán)限不會默認(rèn)開啟; ColorOS5.1及以后的版本的手機(jī),通知欄權(quán)限由系統(tǒng)統(tǒng)一關(guān)閉,需用戶手動打開。

VIVO:

集成VPUSH,通知權(quán)限總開關(guān)基本默認(rèn)打開,但下方類別開關(guān)默認(rèn)關(guān)閉,需要用戶手動打開。

小米手機(jī)接收不到推送

如果未在小米商店發(fā)布的移動應(yīng)用(APP),小米推送團(tuán)隊將有權(quán)不再提供推送服務(wù)。小米應(yīng)用商店對開發(fā)者應(yīng)用定期安全審核的結(jié)果,調(diào)整該應(yīng)用的推送權(quán)限,如開發(fā)者應(yīng)用未能通過小米應(yīng)用商店定期安全審核,小米有權(quán)單方解除協(xié)議,或立即關(guān)閉該應(yīng)用的推送權(quán)限,直至該應(yīng)用通過小米應(yīng)用商店的安全審核并在小米應(yīng)用商店發(fā)布。詳情可參考:link

如果小米手機(jī)接收不到推送,請先檢查通知權(quán)限是否開啟,同時小米設(shè)備從MIUI9開始通知欄使用不重要通知過濾,檢查通知欄里不重要通知里是否有對應(yīng)應(yīng)用的通知。

應(yīng)用通知權(quán)限未打開狀態(tài),打開后推送接收不到

一開始應(yīng)用通知權(quán)限未打開,等進(jìn)行通知權(quán)限打開時,請殺掉進(jìn)程,重新啟動APP然后重新推送。

接收回調(diào)和點(diǎn)擊通知回調(diào)一定會被調(diào)用嗎

不一定。分推送通道,不同廠商,有不同的實(shí)現(xiàn)方式,導(dǎo)致有的都回調(diào),有的只會回調(diào)點(diǎn)擊通知,有的都沒有回調(diào)。

MobPush通道,接收回調(diào)和點(diǎn)擊通知回調(diào)都會被調(diào)用;

華為廠商通道,廠商推送只提供了點(diǎn)擊通知回調(diào);

小米廠商通道,接收回調(diào)和點(diǎn)擊通知回調(diào)都會被調(diào)用;

魅族廠商通道,接收回調(diào)和點(diǎn)擊通知回調(diào)都會被調(diào)用;

OPPO廠商通道,兩種回調(diào)都沒有;

FCM通道,應(yīng)用在前臺時接收回調(diào)和點(diǎn)擊通知回調(diào)都會被調(diào)用,應(yīng)用在后臺或者應(yīng)用進(jìn)程被殺掉未啟動時兩種回調(diào)都沒有;

VIVO廠商通道,廠商推送只提供了點(diǎn)擊通知回調(diào)。

設(shè)置標(biāo)簽成功后,進(jìn)行通過標(biāo)簽推送,接收不到推送

設(shè)置標(biāo)簽成功后,個別廠商同步拉取數(shù)據(jù)需要時間,導(dǎo)致接口設(shè)置標(biāo)簽成功,但是推送時設(shè)備沒有同步,沒有目標(biāo)設(shè)備,故推送接收不到。建議設(shè)備標(biāo)簽成功后,等待幾分鐘之后再進(jìn)行推送。

一臺設(shè)備能設(shè)置幾個別名?不同的設(shè)備能設(shè)置相同的別名嗎?

同一個APP,一臺設(shè)備只能對應(yīng)一個別名,新設(shè)置的會覆蓋掉之前設(shè)置的別名。不同的設(shè)備不能同時設(shè)置相同的別名,最后設(shè)置的設(shè)備生效,其他設(shè)備的別名都將失效。

如果應(yīng)用在Android 9的設(shè)備上獲取不到注冊ID即(regId)

如果在其他版本的Android手機(jī)可以獲取到注冊ID,而在Android 9的設(shè)備上獲取不到時,請確認(rèn)下targetSdkVersion是大于27; 大于27時需在AndroidManifest.xml文件的中application標(biāo)簽中添加 android:usesCleartextTraffic="true"

如果推送配置了FCM廠商,同時需要使用Firebase 的其他產(chǎn)品(ads等產(chǎn)品)時,編譯時報錯了,怎么辦

1.單獨(dú)配置ads和FCM時,他們所依賴的相同的庫版本是否一致,如果不一致,需要進(jìn)行版本統(tǒng)一;
2.進(jìn)行版本統(tǒng)一:在APPmodule的build.gradle中添加

configurations.all { 
    exclude group: 'com.google.firebase', module: 'firebase-messaging' 
} 
//在app module 的build.gradle文件的dependencies里添加
compile 'com.google. firebase:firebase-messaging:17.1.0'

配置vivo廠商推送的appId和AppKey時,需要把“-”去掉嗎

不需要

接入vivo廠商推送,發(fā)送推送成功,vivo設(shè)備未接收到推送

1.檢查配置是否正確,包名是否和申請vivo推送服務(wù)時的包名一致;

2.手機(jī)通知權(quán)限是否打開;

3.檢查消息是否已經(jīng)送達(dá)但是折疊到了消息盒子里面?目前的策略是應(yīng)用存活時展示,不存活時折疊;

4.檢查設(shè)備聯(lián)網(wǎng)是否有問題,如果連接的wifi設(shè)置了代理,一般需要重啟手機(jī),可以切換手機(jī)網(wǎng)絡(luò)重試;

如果配置了廠商推送的信息,但是運(yùn)行打包發(fā)現(xiàn)AppKey不完整,確實(shí)第一個數(shù)字時,怎么辦

這是gradle版本太高導(dǎo)致的,請在配置有問題的地方加入一個空格。

配置了華為廠商推送,為什么有的華為設(shè)備無法接收離線消息

首先,排查配置的華為廠商參數(shù)是否正確; 其次,檢查華為設(shè)備EMUI版本,低于5.0可能不支持,如果低于5.0,可以嘗試升級設(shè)備里的‘華為移動服務(wù)’應(yīng)用,升級‘華為移動服務(wù)’可能會支持華為廠商推送。

MobPush的廠商推送和應(yīng)用使用的其他第三方產(chǎn)品中的廠商推送沖突了,如何解決

首頁,在build.gradle的MobPush{}配置中照常配置廠商信息; 然后,在build.gradle文件最后添加:

configurations.all {
    exclude group: 'com.mob.push.plugins', module: 'meizu'   //屏蔽MobPush提供的魅族廠商包
    exclude group: 'com.mob.push.plugins', module: 'xiaomi'  //屏蔽MobPush提供的小米廠商包
    exclude group: 'com.mob.push.plugins', module: 'vivo'    //屏蔽MobPush提供的vivo廠商包
    exclude group: 'com.mob.push.plugins', module: 'oppo'    //屏蔽MobPush提供的oppo廠商包
}

哪個廠商沖突,exclude哪個廠商就可以。

如果應(yīng)用使用的其他第三方產(chǎn)品中的魅族廠商推送和MobPush的魅族廠商推送沖突了,推送時其中一個不起作用

由于魅族廠商推送對接收監(jiān)聽回調(diào)只取AndroidManifest.xml中配置的第一個Reciever,所以哪個組件在前面配置哪個組件就生效,后面配置的均無效。
解決方法: 自定義一個Receiver,繼承MzPushMessageReceiver,重寫里面所有的方法,在這個Receiver中調(diào)用MobPush的魅族回調(diào)和第三方產(chǎn)品的魅族回調(diào),并在AndroidManifest.xml文件中進(jìn)行配置:

<receiver
                android:name="自定義Receiver">
                <intent-filter>
                        <action
                                android:name="com.meizu.flyme.push.intent.MESSAGE" />
                        <action
                              android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
                        <action
                                android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
                        <action
                                android:name="com.meizu.c2dm.intent.REGISTRATION" />
                        <action
                                android:name="com.meizu.c2dm.intent.RECEIVE" />
                        <category
                                android:name="包名" />
                </intent-filter>
        </receiver>

在自定義的Receiver里實(shí)現(xiàn)示例:

public class MyReceiver extends MzPushMessageReceiver {
         private OtherReceiver otherReceiver;
         private PushMeiZuRevicer mobpushMeiZuReceiver;
         public MyReceiver() {
                otherReceiver = new OtherReceiver();
                mobpushMeiZuReceiver = new PushMeiZuRevicer();
         }
         @Override
         public void onPushStatus(Context context, PushSwitchStatus pushSwitchStatus) {
                otherReceiver.onPushStatus(context, pushSwitchStatus);
                mobpushMeiZuReceiver.onPushStatus(context, pushSwitchStatus);
         }
         @Override
         public void onRegisterStatus(Context context, RegisterStatus registerStatus) {
                otherReceiver.onRegisterStatus(context, registerStatus);
                mobpushMeiZuReceiver.onRegisterStatus(context, registerStatus);
         }
         @Override
         public void onRegister(Context context, String s) {
                otherReceiver.onRegister(context, s);
                mobpushMeiZuReceiver.onRegister(context, s);
         }
         @Override
         public void onUnRegister(Context context, boolean b) {
                otherReceiver.onUnRegister(context, b);
                mobpushMeiZuReceiver.onUnRegister(context, b);
         }
         @Override
         public void onUnRegisterStatus(Context context, UnRegisterStatus unRegisterStatus) {
                otherReceiver.onUnRegisterStatus(context, unRegisterStatus);
                mobpushMeiZuReceiver.onUnRegisterStatus(context, unRegisterStatus);
         }
         @Override
         public void onSubTagsStatus(Context context, SubTagsStatus subTagsStatus) {
                otherReceiver.onSubTagsStatus(context, subTagsStatus);
                mobpushMeiZuReceiver.onSubTagsStatus(context, subTagsStatus);
         }
         @Override
         public void onSubAliasStatus(Context context, SubAliasStatus subAliasStatus) {
                otherReceiver.onSubAliasStatus(context, subAliasStatus);
                mobpushMeiZuReceiver.onSubAliasStatus(context, subAliasStatus);
         }
         @Override
         public void onNotificationClicked(Context context, MzPushMessage mzPushMessage) {
                otherReceiver.onNotificationClicked(context, mzPushMessage);
                mobpushMeiZuReceiver.onNotificationClicked(context, mzPushMessage);
         }
         @Override
         public void onNotificationArrived(Context context, MzPushMessage mzPushMessage) {
                otherReceiver.onNotificationArrived(context, mzPushMessage);
                mobpushMeiZuReceiver.onNotificationArrived(context, mzPushMessage);
         }
         @Override
         public void onNotifyMessageArrived(Context context, String s) {
                otherReceiver.onNotifyMessageArrived(context, s);
                mobpushMeiZuReceiver.onNotifyMessageArrived(context, s);
         }
    }

配置了魅族廠商推送,客戶端debug log輸出注冊成功,推送時接收不到推送或者離線推送接收不到,如何解決

1.確認(rèn)下魅族廠商推送接入的是flyme推送,而不是ups推送。
2.確認(rèn)下魅族開發(fā)者平臺創(chuàng)建的應(yīng)用是否配置了回執(zhí),如果沒有配置,請配置上哦~,這個會影響推送結(jié)果,導(dǎo)致推送不成功。
3.如果上面都確認(rèn)正常,仍存在問題請聯(lián)系MobTech技術(shù)支持進(jìn)行排查解決。

同一個推送監(jiān)聽回調(diào)被調(diào)用了多次,為什么

如果應(yīng)用有多個子進(jìn)程,同時推送監(jiān)聽回調(diào)是在Application的onCreate方法中添加,那么存在幾個子進(jìn)程Application的onCreate會調(diào)用幾次,監(jiān)聽回調(diào)也會被添加幾次,所以會出現(xiàn)同一個推送監(jiān)聽回調(diào)被調(diào)用多次的情況。 如果想要只監(jiān)聽回調(diào)主進(jìn)程,那么再添加時需判斷下當(dāng)前進(jìn)程,為主進(jìn)程時再添加推送監(jiān)聽回調(diào)。

支持角標(biāo)功能嗎

MobPush是支持角標(biāo)功能的。需調(diào)用MobPush.setShowBadge(true);打開角標(biāo)功能,默認(rèn)false,角標(biāo)功能關(guān)閉。
對于廠商通道來說,小米系統(tǒng)本身就支持角標(biāo)功能,不需要做任何處理;
魅族廠商不支持角標(biāo)功能;
OPPO和VIVO廠商目前只對自家應(yīng)用和微信QQ開放角標(biāo)功能;
華為廠商對EMUI 8.0 及以上支持角標(biāo)功能,如果需要對華為廠商打開角標(biāo)功能,在服務(wù)端推送時在extrasMapList參數(shù)里面新增androidBadgeClass參數(shù),其參數(shù)值是應(yīng)用入口Activity 的全路徑,這樣EMUI8.0及以上走華為廠商推送的設(shè)備就可以顯示角標(biāo)了。

MobPush支持多包名嗎

支持。

一臺設(shè)備應(yīng)用能設(shè)置多個標(biāo)簽嗎?相同應(yīng)用不同的設(shè)備能設(shè)置相同的標(biāo)簽嗎

同一個APP,一臺設(shè)備可以訂閱多個標(biāo)簽,標(biāo)簽請盡量使用英文避免使用中文或特殊字符,導(dǎo)致廠商訂閱標(biāo)簽失敗而推送不成功;不同的設(shè)備可以同時設(shè)置同一標(biāo)簽。

MobPush的RegistrationId會發(fā)生變化嗎?如果發(fā)送變化是在什么時機(jī)下?RegistrationId是固定長度的嗎

注冊id一般情況下不會發(fā)送變化,但也會出現(xiàn)發(fā)現(xiàn)變化的情況,有時卸載重裝或者設(shè)備恢復(fù)出廠設(shè)備等情況下注冊id會發(fā)生變化,而注冊id的長度由于服務(wù)端內(nèi)部優(yōu)化后續(xù)會變化,不是固定長度的。

使用StopPush是否會關(guān)閉所有廠商渠道推送

除了FCM廠商無法關(guān)閉(沒有提供相關(guān)接口),TCP以及其他廠商都是正常關(guān)閉的。

打開通知權(quán)限后,還是無法收到

MobPush只會在初始化的時候更新記錄的通知權(quán)限狀態(tài)。

如初始化的時候通知權(quán)限是關(guān)閉的,需再次重啟APP,更新記錄的通知權(quán)限狀態(tài)。 如需要實(shí)時更新,可調(diào)用該方法:

//打開輪詢開關(guān)
MobPush.startNotificationMonitor();
//關(guān)閉輪詢開關(guān)
MobPush.stopNotificationMonitor();

無法統(tǒng)計到廠商

請在點(diǎn)擊通知打開的Activity的onCreate中加上該方法

MobPush.notificationClickAck(getIntent());

華為廠商長文本樣式無效

使用華為長文本樣式,標(biāo)題(title)為必填項。

華為廠商解析intent為空

華為傳遞數(shù)據(jù)給應(yīng)用僅在NC版本在在9.11及以上版本生效,NC版本查看方式(設(shè)置-應(yīng)用-應(yīng)用管理-推送服務(wù)),老舊設(shè)備存在無推送服務(wù)或版本較低問題,可嘗試升級版本解決,如無法升級,華為未給出老舊設(shè)備兼容方案。詳細(xì)說明可查看:link

集成華為廠商通道上架Google商店被拒,應(yīng)該怎么解決?

如上架google商店被拒文案中有“We found your app is using a non-compliant version of Huawei Mobile Services SDK which contains code to download or install applications from unknown sources outside of Google Play”字樣,原因是您當(dāng)前使用的華為廠商SDK版本過低,華為在 6.3.0.304(2022-03-31)及以上的版本修復(fù)了該問題,您可在Gradle腳本中主動聲明該版本,示例如下。

本地通知使用setTimestamp函數(shù)在Android12及以上版本無效

因在Android12版本,在調(diào)用精準(zhǔn)鬧鐘方法時,必須進(jìn)行SCHEDULE_EXACT_ALARM權(quán)限的添加,可以在 manifest文件中添加此權(quán)限解決。

以上就是MobPush Android常見問題解決分析的詳細(xì)內(nèi)容,更多關(guān)于MobPush Android常見問題的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論