小米應(yīng)用商店:小米推送常見問題匯總(下)

來源: 小米開放平臺
作者:小米開放平臺
時間:2020-09-21
23020
本文介紹小米應(yīng)用商店的推送常見問題匯總。

四、接入過程問題

1.第一次接觸安卓版小米推送服務(wù),使用你們的demo沒有成功,怎么辦?

第一次使用小米推送服務(wù)(安卓版),請仔細(xì)閱讀如下指南:小米推送Android版快速接入指南(https://dev.mi.com/console/doc/detail?pId=100)。

一般注冊推送服務(wù)沒成功,常見的原因如下:

1)沒有開啟推送服務(wù)。使用推送服務(wù)前需要登錄開發(fā)者賬號、創(chuàng)建應(yīng)用、開通推送服務(wù)3個步驟,缺一不可。

2)沒有正確配置AndroidManifest.xml文件。需要特別注意包名、權(quán)限部分,包名需要跟開發(fā)者站點(diǎn)上開通推送服務(wù)的一致,權(quán)限的前綴需要改成包名。

3)系統(tǒng)時間錯誤。由于小米推送服務(wù)需要使用https請求向服務(wù)器注冊一個匿名賬號,在次過程中如果系統(tǒng)時間錯誤,會引起https過期,導(dǎo)致注冊不成功。

4)聯(lián)網(wǎng)被阻止。小米推送服務(wù)客戶端需要使用5222和443兩個端口,如果在公司內(nèi)網(wǎng),需要聯(lián)系IT部門把這兩個端口開放。同時需要檢查應(yīng)用的聯(lián)網(wǎng)是否會被一些手機(jī)安全助手阻止。需要特別注意的是,在MIUI系統(tǒng)上,長連接是由“小米服務(wù)框架”這個系統(tǒng)應(yīng)用維護(hù)的,因此需要確保這個應(yīng)用的聯(lián)網(wǎng)并沒有被阻止。

2.為什么onNotificationMessageArrived方法沒被調(diào)用到?

首先,確認(rèn)接入是否正確,這個方法需要在manifest中添加<action android:name=”com.xiaomi.mipush.MESSAGE_ARRIVED”/>這個action。

在MIUI系統(tǒng)上,這個方法的調(diào)用需要同時滿足如下兩個條件:

1)新版的MIUI。這個特性是在2015年才加進(jìn)小米推送服務(wù)的,因此需要MIUI升級到較新的版本才能調(diào)用這個方法。

2)需要應(yīng)用駐留后臺。小米推送服務(wù)的通知欄消息,是可以在應(yīng)用不啟動的前提下,就彈出通知欄消息的,在這種情況下,由于MIUI的自啟動管理,限制了應(yīng)用不能在被殺后被后臺喚醒,所以推送消息不能直接喚醒應(yīng)用執(zhí)行這個方法。

3.為什么我在onNotificationMessageClicked方法中的startActivity不能調(diào)起目標(biāo)界面?

由于onNotificationMessageClicked中傳入的context是application context,本身沒有activity棧,因此需要在創(chuàng)建activity時候加入NEW_TASK的flag:Intent i=new Intent(context,MyActivity.class);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);

4.為什么我的設(shè)備在調(diào)用registerPush的時候會出現(xiàn)no account的錯誤?

在app第一次在一臺設(shè)備上注冊推送服務(wù)時,sdk會通過https請求,從小米推送服務(wù)器生成一個匿名賬號。這個錯誤是由于這個請求失敗導(dǎo)致的。一般請求失敗常見的原因包括如下幾種:

1)系統(tǒng)時間錯誤。時間錯誤會導(dǎo)致https在校驗證書有效期的時候,出現(xiàn)證書過期,導(dǎo)致https請求失敗。

2)網(wǎng)絡(luò)原因。這個大部分的原因都是設(shè)備架了代理服務(wù)器或連了vpn,如果排除這些原因,就檢查一下app是否申請了聯(lián)網(wǎng)權(quán)限,是否被什么安全軟件阻止了登錄,公司wifi是否能用,等等。

3)如果是在MIUI系統(tǒng)上,生成匿名賬號是在一個叫小米服務(wù)框架的系統(tǒng)app上完成的,還需要檢查這個app的聯(lián)網(wǎng)是不是在安全中心的聯(lián)網(wǎng)控制中被手動關(guān)閉了。

5.我們iOS應(yīng)用還沒發(fā)布到蘋果商店,是不是正式包還收不到消息,要等發(fā)布了才行?

將MISDKRun設(shè)置為online,然后使用adHoc的證書即可收到生產(chǎn)環(huán)境的消息;

6.如何進(jìn)行通知分類、實(shí)現(xiàn)通知欄多條消息并存?

可以使用notifyId(Integer id)可選項。

https://dev.mi.com/console/doc/detail?pId=1278#_3_3

默認(rèn)情況下,通知欄只顯示一條推送消息。如果通知欄要顯示多條推送消息,需要針對不同的消息設(shè)置不同的notify_id(相同notify_id的通知欄消息會覆蓋之前的)。

7.注冊推送,SDK日志提示“MIIDManager startMIIDUpdateListener failed cause lack of GET_ACCOUNTS permission”。

這是推送的一種消息推送方式,不影響正常使用;當(dāng)sdk執(zhí)行按miid推送消息的時候,會檢查一下app有沒有獲得miid的權(quán)限,如果沒有,會打印相關(guān)消息。

8.注冊推送提示“Don't send message before initialization succeeded!”

Mipush sdk內(nèi)部邏輯,檢測消息通道是否順暢,不影響推送功能正常使用。

9.Mipush是否支持通知欄自定義顯示圖片/如何自定義通知欄樣式?

SDK可以根據(jù)推送消息中指定的layout文件和填充內(nèi)容,自由定制展示樣式。在MIUI中,通知展示由系統(tǒng)通道負(fù)責(zé),需要MIUI升級后才支持自定義通知。具體使用方法可以參考《服務(wù)端Java SDK文檔》。另外,關(guān)于自定義通知欄layout的配置目前只支持app本地資源已有的圖片和布局文件,可以通過這個服務(wù)器自定義布局顯示出來;暫不支持網(wǎng)絡(luò)圖片下載。

10.推送消息支持靜默推送(即無聲音、無燈光、無震動)嗎?

支持,可以在構(gòu)建消息時調(diào)用notifyType(Integer type)方法,將type設(shè)置成0即可。

notifyType表示設(shè)置通知類型,type類型支持以下值:

·1:使用默認(rèn)提示音提示

·2:使用默認(rèn)震動提示

·4:使用默認(rèn)led燈光提示

·-1(系統(tǒng)默認(rèn)值):以上三種效果都有

·0:以上三種效果都無,即靜默推送。

并且支持1,2,4的任意OR運(yùn)算來實(shí)現(xiàn)聲音、震動和閃光燈的任意組合。

11.timeToLive最大時長為多少?

timeToLive表示消息的生命周期,若用戶離線,設(shè)置消息在服務(wù)器保存的時間,單位:ms,服務(wù)器默認(rèn)最長保留14天。

12.如何開啟/關(guān)閉app在前臺時的通知彈出?

應(yīng)用在前臺的情況下,通知消息到達(dá)客戶端后是否彈出通知可以通過服務(wù)端來設(shè)置。服務(wù)端調(diào)用Message.Builder類的extra(String key,String value)方法將EXTRA_PARAM_NOTIFY_FOREGROUND的值設(shè)置為"0"或者"1"。當(dāng)EXTRA_PARAM_NOTIFY_FOREGROUND值為”1″時,app會彈出通知欄消息;當(dāng)EXTRA_PARAM_NOTIFY_FOREGROUND值為”0″時,app不會彈出通知欄消息。注:默認(rèn)情況下會彈出通知欄消息。

示例:

Message message = new Message.Builder()

          .title(title)

          .description(description).payload(messagePayload)

          .restrictedPackageName(MY_PACKAGE_NAME)

          .passThrough(0)

          .notifyType(1)

          .extra(Constants.EXTRA_PARAM_NOTIFY_FOREGROUND, "0")

          .build();

13.給IOS10系統(tǒng)推送消息時,如何設(shè)置title?

如果使用的Java或PHP的SDK,可以使用IOSBuilder的title、subtitle、body方法。

14.如何理解消息回執(zhí)中的barStatus參數(shù)?

barStatus表示用戶是否允許該app的消息在通知欄展示。barStatus的值只和用戶本地的配置有關(guān)系。用戶設(shè)置允許app彈出通知,返回Enable;用戶設(shè)置不允許app彈出通知,返回Disable;本地獲取狀態(tài)出現(xiàn)異常時,返回Unknown。Disable時,如果有消息到達(dá),不會顯示通知;Enable時,如果有消息到達(dá),會顯示通知。

15.為什么有時候獲取到的regID是非正式環(huán)境的?(平臺類型是iOS類型)

客戶端獲取到的regId環(huán)境,與MiSDKRun有關(guān)。MiSDKRun=debug為測試環(huán)境,MiSDKRun=online為正式環(huán)境。

16.IOS平臺接入時是否支持swift?

支持,具體用法請參見文檔:https://dev.mi.com/console/doc/detail?pId=98#_3_13

17.使用推送運(yùn)營平臺發(fā)送消息時,如何設(shè)置notifyId?

可以在“通知分類”輸入框里設(shè)置。

faq_1.png

18.IOS和android平臺需要分別創(chuàng)建應(yīng)用還是可以使用同一個?

IOS和android平臺需要創(chuàng)建不同的應(yīng)用,要分開創(chuàng)建,AppId和APPKey也是不同的。

19.收到回調(diào):onCommandResult:command={Registration},resultCode={70000001},reason={the push is not connected.},category={null},commandArguments={null}

該errorCode一般是由于網(wǎng)絡(luò)問題導(dǎo)致的,請先確認(rèn)設(shè)備網(wǎng)絡(luò)是否正常,網(wǎng)絡(luò)是否使用代理。另外,修改系統(tǒng)時間也會導(dǎo)致上述錯誤??赏ㄟ^設(shè)備瀏覽器登錄如下鏈接來確認(rèn)設(shè)備網(wǎng)絡(luò)及設(shè)置是否正常:

國內(nèi):https://api.xmpush.xiaomi.com/_x/monitor/status

海外:https://api.xmpush.global.xiaomi.com/_x/monitor/status

20.蘋果手機(jī)的應(yīng)用在打開狀態(tài)時收不到消息,在后臺和未打開狀態(tài)時卻能收到消息,這種現(xiàn)象正常嗎?

正常。蘋果手機(jī)的應(yīng)用在前臺時,消息是不會展示的,但手機(jī)實(shí)際是收到消息的,可以在接受消息的回調(diào)中打斷點(diǎn),或者打印log進(jìn)行驗證。

五、推送統(tǒng)計數(shù)據(jù)問題

1.計劃推送數(shù)是指什么?怎么計算的?

計劃推送數(shù)是指推送請求所覆蓋的所有的設(shè)備數(shù),如果目標(biāo)對象的選取是所有用戶,那分母就是歷史上所有激活過推送服務(wù)的有效設(shè)備數(shù);如果是按照標(biāo)簽選取的,那分母是歷史上所有訂閱過這個標(biāo)簽的有效設(shè)備數(shù);如果是按照別名或者regID來選取,那么分母就是所請求的所有合法的別名或regID。

2.設(shè)備有效性的判定規(guī)則:

如果應(yīng)用調(diào)用了unregisterPush,或者在MIUI上卸載了,或者超過3個月都沒有和小米服務(wù)器建立過長連接,則會判定設(shè)備失效。

3.為什么在數(shù)據(jù)統(tǒng)計后臺看,按天統(tǒng)計中,會出現(xiàn)計劃推送少于送達(dá)數(shù)的現(xiàn)象?

這是正常現(xiàn)象,在按天統(tǒng)計中,計劃推送是指當(dāng)天的所有請求總共覆蓋了多少設(shè)備數(shù),而送達(dá)數(shù)則是當(dāng)天這個app所有的送達(dá),因此這個送達(dá)數(shù)不但包括當(dāng)天發(fā)的消息送達(dá)了多少,也包括了之前發(fā)的消息,作為離線消息當(dāng)天抵達(dá)設(shè)備的數(shù)量。因此這個送達(dá)數(shù)是存在大于計劃推送數(shù)的可能性的。

4.如何查詢統(tǒng)計數(shù)據(jù):

1)使用服務(wù)端SDK中的數(shù)據(jù)API直接拉取統(tǒng)計數(shù)據(jù),可方便地與開發(fā)者現(xiàn)有的統(tǒng)計系統(tǒng)結(jié)合;

2)登錄開發(fā)者站,進(jìn)入應(yīng)用的推送服務(wù)查看推送統(tǒng)計數(shù)據(jù);

5.從計劃推送量到實(shí)際下發(fā)量再到送達(dá)量會有一定比例的損耗,如何降低這個損耗?

一方面,可以調(diào)用服務(wù)端的feedback接口,拉取無效的設(shè)備,以后在推送總量里剔除這部分設(shè)備。開發(fā)者也可以自行維護(hù)有效設(shè)備集合,減少發(fā)送的設(shè)備里存在過多取消注冊或無效的設(shè)備。

另一方面,可以設(shè)置合適的ttl(timeToLive消息過期時間),建議如果消息沒有實(shí)效性的話可以適度增大ttl,也可不設(shè)置該值直接使用我們服務(wù)器的默認(rèn)時間(2周),這樣的話只要用戶在ttl有效期之內(nèi)上線,就能收到之前推送的消息。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于小米開放平臺,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機(jī)
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機(jī)
雙十一即將來臨,電商預(yù)算爭奪戰(zhàn)已經(jīng)打響!
小米開發(fā)者
小米應(yīng)用商店
2024-10-182024-10-18
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
為了保護(hù)用戶權(quán)益,提升用戶體驗,根據(jù)《工業(yè)和信息化部關(guān)于開展移動互聯(lián)網(wǎng)應(yīng)用程序備案工作的通知》,小米應(yīng)用商店新增了APP備案包名與主辦單位的要求,以下是詳細(xì)內(nèi)容。
小米開發(fā)者
小米應(yīng)用商店
2024-10-132024-10-13
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
小米應(yīng)用商店允許在后臺設(shè)置關(guān)鍵詞,8個關(guān)鍵詞,每個詞不超過5個字,權(quán)重從左到右逐漸降低。
App
小米應(yīng)用商店
應(yīng)用商店
2024-10-022024-10-02
米盟10月廣告增長提效指南【附新功能預(yù)告】
米盟10月廣告增長提效指南【附新功能預(yù)告】
國慶長假即將拉開序幕,7天長假將帶來一波流量的高峰。小米廣告聯(lián)盟(以下簡稱:米盟)為開發(fā)者伙伴帶來了10月廣告增長提效指南,內(nèi)含eCPM趨勢和預(yù)算分布預(yù)估、變現(xiàn)提效Tips、新功能爆料,助力開發(fā)者伙伴在小長假期間高效地把握預(yù)算節(jié)奏、提前精準(zhǔn)布局,實(shí)現(xiàn)量效雙贏!
小米開發(fā)者
小米應(yīng)用商店
應(yīng)用商店
2024-10-012024-10-01
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家