MobPush iOS端常見問題

語言: CN / TW / HK

推送的下發邏輯是什麼樣的,什麼叫離線推送

推送下發時候目前如果應用程序處於線上狀態,走我們MobTech通道,當應用程序結束,推送下發會走廠商通道,如果廠商下發失敗,或者未配置廠商等配置,且應用程序是殺死狀態,那麼推送會進入到離線池中,在離線時間有效期內,當用戶再次開啟APP,推送會再次下發。介面推送時候預設離線時間為1天,離線時間可自定義最高為30天。

通知和自定義訊息區別

通知:通知是推送的常規型別,線上走tcp通道,結束程序走廠商(APNS),可以通過系統層面講通知展示到手機的通知欄。

自定義訊息:自定義訊息實際為透傳訊息,需要應用程序存活,服務端會將推送的boday等引數下發到客戶端,由客戶端回撥接收,自行處理。

什麼叫regsiterid,別名和標籤分別是什麼含義

regsiterid和別名:其實都是裝置的唯一標識,推送本質是將訊息推送到裝置上,regsiteid是MobTech給您生成的,但是regsiteid並不是不會改變,所以需要每次獲取最新的regsiterid。別名相當於您自定義的裝置標識。其本質是和regsiterid繫結,所以也是唯一的,且同一臺裝置只能設定一個,如果有AB倆臺裝置同時設定一個別名,那麼按照設定順序最後設定的那臺裝置別名生效。regsiterid和別名均適用於單點登入。

標籤:標籤功能,可以理解為群體推送,可以用來區分使用者群體,一個標籤可以給多個裝置設定,每個裝置也可以具備多個標籤,適用於使用者群體區分。也使用於多點登入邏輯。

推送成功後,後臺沒有資料

推送成功後,後臺統計不到資料,分為倆種情況(此處預設推送您客戶端可以獲取到regsiterid)。第一種情況:當推送下發的裝置推送許可權被關掉,那麼不會下發,且沒有推送資料統計;第二種:推送任務成功下發,但是推送任務進入到離線池中,此時當用戶再次開啟APP收到推送,才能被後臺統計到

推送手機收不到怎麼辦

iOS:目前推送分為線上推送和廠商APNS推送,由於iOS區分開發環境和生產環境所以第一時間檢視下推送是否環境不匹配,第二步一定要確認應用執行狀態下能否收到推送。除錯推送順序,先除錯debug環境下的線上推送,在除錯debug環境下殺死APP的推送。如果線上可以收到,殺死APP收不到,可通過smartpush工具校驗證書。

Android:安卓和iOS本質推送原理一樣,但是安卓不區分測試和生產,所以一定要確定是否線上可以收到推送,如果線上收不到推送,請檢查下AppKey相關是否配置有問題,客戶端獲取regsiterid是否能獲取成功,推送通知是否開啟,注意有一些通知會被歸類到不重要通知欄。如果線上可以收到,請檢查廠商相關配置,以及是否推送內容,推送頻次被廠商限制。

注意:如果還不能解決收到請及時聯絡技術支援幫您解決。

推送有測試環境和正式環境嗎

iOS:推送存在測試環境和生產環境,這個是由於iOS本身推送就區分推送開發證書和生產證書,只需要在程式碼中設定如下:

// 設定推送環境
#ifdef DEBUG
    [MobPush setAPNsForProduction:NO];
#else
    [MobPush setAPNsForProduction:YES];
#endi

注意:iOS測試生產環境需要achiver打ADHOC型別的ipa包去測試生產哦

Android:安卓不區分推送環境,測試時候建議通過精準推送去測試,防止影響線上的裝置應用。

推送支援富媒體推送嗎,支援語音播放以及圖片展示嗎

iOS: 支援富媒體推送,需要iOS系統10以上裝置,按照demo設定推送擴充套件,即可實現圖片的播放,音訊播放由於應用程序被殺死,所以需要在擴充套件中只能播放本地音訊哦。

Android: MobPush通道支援富媒體,廠商通道暫未開通,後續會開通廠商通道支援)

靜默推送和正常推送的區別

正常推送使用者會收到推送內容、聲音,應用處於後臺或者kill可以收到推送資訊,但是不會走任何回撥,點選推送內容進入APP後才會進入點選回撥,要想處於後臺走apns回撥的話,需要勾選靜默推送, 靜默推送是一種特殊的遠端推送,沒有推送內容聲音,不用點選推送內容也不用進入APP就會執行回撥,使用者毫無感覺。

MobPush支援自定義聲音嗎,支援自定義跳轉嗎?

iOS:支援自定義聲音,只需要將聲音檔案拖入到專案中,對應推送傳入聲音檔名稱即可,支援自定義跳轉,可在對應vc中設定標識跳轉,詳情參考demo。

Android :支援自定義聲音設定,方法同上,支援自定義跳轉,可通過scheme跳轉,詳情參考demo。

{"statue":4801,"error":"請求IP不匹配或者未設定"}

MobTech後臺可以設定IP白名單,如果設定後只有固定ip可以進行推送,不設定的話預設所有IP均可以推送。

推送任務是否有限制

目前推送限制分為以下幾種:

第一種:廣播限制,推送廣播型別每天限制100,每小時限制最高10次;推送regsiterid或者別名以及標籤無限制,但單次下發最高下發1000個regsiterid,別名或者標籤(備註別名長度自定義限制位元組長度【1-100】)。

第二種: 介面頻率限制,推送介面(傳送+查詢)的介面頻率限制,預設500次/分鐘;webapi全部介面的請求頻率限制,預設800次/分鐘。(可通過技術支援調高頻率如果需求比較高)。

推送任務可根據地區進行地理範圍推送

推送是可以通過設定推送地理條件進行區域推送的,目前精準到為市級。參考v3推送介面。

呼叫服務端推送報錯怎麼辦 4001 4002 4005等

服務端推送報錯,4001請求缺少必要引數。4002請求引數錯誤,4005資料校驗失敗(sign校驗失敗)這些通常都是引數設定或者加密時候的問題,可以通過postman進行嘗試引數:

{"source":"webapi","appkey":"2ecbc7bc53712","pushTarget":{"target":1},"pushForward":{"scheme":"mlink://com.mob.mobpush.link","nextType":2,"schemeDataList":{"key":"Iskey","value":"IsValue"}},"pushNotify":{"plats":[2],"iosProduction":0,"content":"推送的內容","type":1}}

/*****
參考連結:[MobPush 的介面 以及一些示例 - 簡書 (jianshu.com)](https://www.jianshu.com/p/0aa7308476de)
*****/

推送回調有的時候可以走,有的時候不能走,斷點也沒走是什麼導致的

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessage:) name:MobPushDidReceiveMessageNotification object:nil]; 需要檢查這個方法是不是每次都呼叫到了,有可能是隻呼叫了一次這個方法,並不是每次都呼叫了

後臺顯示推送訊息是已取消狀態

第一您這邊rid或者別名傳的不對,或者rid或者別名未入庫,第二種手機裝置關閉推送許可權等等都會已取消,需要開啟推送重新啟動應用

如果推海外的話,需要加以下介面設定

國內推海外也是可以的,但是到達率應該會下降,因為海外連國內tcp服務不穩定,所以最好切換到海外伺服器,需要呼叫這個介面[MobPush setRegionID:1],如果切換到海外伺服器,推送的時候,後臺推送需要選擇海外版推送,如果呼叫api介面推送,需要用海外域名介面 http://abroad.api.push.mob.com/v3/push/createPush 介面去推送,傳值可以參考國內介面去傳值

企業賬號的證書能否 使用MobPush

企業賬號的證書也可以 使用MobPush

推送開啟APP可以收到圖片,但是關閉APP就收不到圖片,是什麼問題呢

需要檢查下擴充套件是否新增

Push後臺上傳證書,一直報錯問題

有些使用者一直說他的證書是對的,但是上傳還是報錯,可能他之前申請的證書是可以支援開發環境也可以支援生產環境測試的,這樣的上傳的不行的,需要去根據我們的文件裡的製作證書的方法在重新制作一個只支援開發環境的證書在上傳

API請求的時候一直提示5001:服務端未知錯誤問題

需要檢查請求的引數,引數裡可能有的傳值有問題

關於Push推送的一些說明

新增使用者數:當日新增與MobTech伺服器保持連線的使用者數

活躍使用者數:當日內MobPush SDK與MobTech伺服器建立過長連結的使用者總數量

目標數:近30天內MobPush SDK與MobTech伺服器建立過長連結的使用者總數量,且在裝、推送許可權開啟(其實也叫有效目標數)

下發數:由伺服器實際下發到客戶端的訊息總數,包含TCP下發數(不包含離線池的資料)+MobTech請求廠商,並廠商返回成功的數量

到達數:客戶端SDK接收到訊息的數量

點選數:Push點選數+補量點選數

  • Push點選數:點選通知欄訊息的訊息數量(透傳不統計點選)
  • 補量點選數:通過補量任務帶來的點選數

下發率:下發數/目標數

到達率:到達數/下發數

點選率:點選數/到達數

觸達率:到達數/目標數

關於率的統計都精確到小數點2位

在flutter上生產環境推送APNS收不到

通過flutter build iOS來打包然後釋出到蒲公英上,推送的時候選擇iOS正式環境推送,前臺能收到,但後臺不能收到的問題,需要改用achiver打ADHOC型別的ipa包 然後釋出到蒲公英後,在重新安裝測試,這樣前臺後臺才能收到。