極光推送集成(七)

版本記錄

版本號 時間
V1.0 2017.05.15

前言

前一篇已經對ios的SDK進行了研究,這一篇則對iOS SDK 常見問題進行說明。
1. 極光推送集成(一)

2. 極光推送集成(二)

3. 極光推送集成(三)

4. 極光推送集成(四)

5. 極光推送集成(五)

6. 極光推送集成(六)

下面說一下iOS SDK 的常見問題。

iOS SDK 常見問題

一、iOS 9集成

1.iOS 9變動影響SDK部分:

  • 增加了bitCode編碼格式,當SDK不支持bitCode時,用戶集成時無法開啟bitCode選項.
    • 現象:用戶集成SDK后無法編譯通過,錯誤日志里包含了bitCode的相關錯誤信息
  • 默認使用https連接,如果請求為http,需要手動配置plist來支持http服務,當前我們的服務器請求都走http服務。
    • 現象:用戶集成SDK后,所有JPush相關的http服務都提示連接錯誤或者連接超時,可能是此問題。

2.bitCode解決方式

  • JPush iOS SDK v1.8.7 及以上版本的SDK,已經增加對 iOS 9 新特性 bitCode 的支持.JMessage iOS SDK v2.0.0 及以上版本支持bitCode。

3.Https解決方式

SDK未提供https地址版本時

  • 需要用戶主動在當前項目的Info.plist中添加NSAppTransportSecurity類型Dictionary。
  • 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設為YES。

二、iOS 如何推送自定義聲音

客戶端需要將聲音文件導入工程里,選中工程Target -> Build Phrases -> Copy Bundle Resources。

自定義聲音

服務端推送時,需要指定iOS 平臺下的sound參數,具體傳入的值是聲音文件名+后綴。


三、為什么iOS收不到推送消息?

如果你確認 appKey 在 SDK 客戶端與 Portal 上設置是一致,其他環節也按照文檔正確地操作。但還是收不到推送消息。那么,有一定的可能性,是你在 Portal 上上傳的證書,不是 APNs (Push) 證書。推送時指定的iOS推送環境和應用證書是同一個環境。請參考iOS 證書設置指南再次檢查證書選擇是否正確。

請注意:iOS能接受消息的必要條件是:應用程序的證書要和你上傳到jpush portal上的證書對應,如果你的程序是直接在xcode上運行的,你的應用部署環境必須是開發狀態才能收到APNS消息。

溫馨提示:目前api推送的時候可以通過參數apns_production可以指定推送環境,false為開發環境,true為生產環境。V3 api不帶此參數則默認為生產環境,V3 api封裝的sdk 默認為開發環境。如果api有傳apns_production則以此值為準,否則以應用詳情的部署環境為準。


四、為什么啟動的時候出現 Did Fail To Register For Remote Notifications With Error的錯誤

程序運行的時候出現下面的錯誤信息:

did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程序的“aps-environment”的權利字符串" UserInfo=0x1c55e000 {NSLocalizedDescription=未找到應用程序的“aps-environment”的權利字符串}

這個是由于你的Provisioning Profile文件,不具備APNS功能導致的。請登陸Apple Developer 網站設置好證書,更新Provisioning Profile,重新導入Xcode。或參考博客


五、如何在接收到 APN 的時候獲取 APN 消息內容并進行跳轉或做出響應處理?

獲取 APNs 推送內容


六、如何關閉 APN 推送?

可通過調用代碼

// iOS 8 以上可用此方法
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]] ;

進入您的應用的設置頁面,點擊“通知設置”,用戶手可以動變更“允許通知”的狀態。


七、App badge number(角標)如何更改與清空?

JPush 網站上推送 iOS 通知時,可在[可選設置]里面指定 badge 參數的值,如:1或"+1"。

api上指定badge的參數請看:Push API
客戶端上報badge到JPush服務器的接口請看:設置badge
關于badge +1的介紹,請看APNs Notification badge


八、Icon Badge number 的清空方法:

  • APN 推送內容指定 badge number 為 0;
  • 在代碼中使用如下代碼清空 badge number: [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

注意:
badge累加只能通過v3 api推送,且只有1.7.4版本以上才能支持。


九、為何推送一條 APN 后,點擊通知中心的 APN 通知打開 App,可是 APN 通知在通知中心依然存在而未被刪除?

如果推送 APN 時,Badge number 被指定為0 ,則可能出現 APN 消息在通知中心被點擊后,盡管調用了 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 但 APN 消息在通知中心不會被刪除的情況。 這種情況可以按如下代碼調用以清除通知中心的 APN 通知。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

如果仍有其他消息,則考慮清除 local notification 通知。
( [[UIApplication sharedApplication] cancelAllLocalNotifications] )


十、出現Not get deviceToken yet. Maybe: your certificate not configured APNs?...錯誤日志時如何排除問題?

如果出現上述日志,則說明一段時間內都無法獲取device token,那么:

  • 確認你的app配置了apns權限,如果未配置apns權限,則應該會出現此錯誤提示。
  • 確認你的app運行在ios真機而非模擬器上,且通知中心中對應app的通知權限沒有完全關閉(alert/sound/badge至少有一個權限是打開的)。
  • 確認你的網絡狀況,與apple的服務器的連接是通過tcp的 5223端口連接,確認你網絡的對應端口是否可用,可通過下列命令來確認這點:
telnet 1-courier.push.apple.com 5223

在代碼中可在以下兩個函數中斷點以確認device token的獲取狀態。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;

如果app運行進入 didFailToRegisterForRemoteNotificationsWithError 則說明app的APNS權限問題或者app運行在模擬器,參考 證書設置文檔。
如果app運行進入didRegisterForRemoteNotificationsWithDeviceToken 則說明運行正常,請確認你在此函數中的代碼中有將token傳遞給jpush的調用:

[JPUSHService registerDeviceToken:deviceToken];

  • 如果以上兩個registerRemoteNotification的函數都未進入, 請確認你的代碼中有注冊申請apns的函數調用:
[JPUSHService registerForRemoteNotificationTypes:];

  • 如果上述情況都已確認且未進入第4步的任意回調函數,則可以判斷無法獲取token的原因在于設備與apple的網絡連通性問題(注:一個設備只有在未申請過token的情況下才會需要與apple的網絡交互來獲取token,已經獲取過某一環境token的設備在無網絡的情況下也能獲取到對應環境的token(環境分為 開發/生產)),這種情況下切換網絡能夠在大部分情況下解決此問題。
  • 如果仍然有問題,請將上述步驟的結果以郵件附件的形式發送到JPush支持郵箱,我們將協助你解決此問題。

十一、上傳到appStore的版本為什么收不到推送?

  • 請確認xcode選擇的生產證書和上傳的證書的bundleid一致;
  • 如果是在jpush網站上推送,請確認新建通知時推送對象是否選擇了生產環境;
  • 如果是v3 api推送,請確認是否使用了apns_production參數,值是否為:true;如果沒有使用apns_production參數請確認jpush網站上該應用的部署環境是否已經切換到生產環境。

十二、iOS 平臺上傳證書一直為未通過狀態

證書上傳未通過的原因一般有:

  • 密碼錯誤;
  • 上傳的apns證書環境不一致;
  • 上傳到控制臺必須是apns證書,非apns證書會帶來錯誤,還有其他的原因可能是開發者證書也可能是apns證書那里導出來的私鑰。

具體請看上傳后顯示的錯誤輸出內容


十三、為什么日志里面會打印:You've implemented -[ <UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.

這個主要是提示開發者如果要支持UIBackgroundModes,需要開啟Remote notifications,具體操作可以看:iOS 7 Background Remote Notification

后記

??極光推送理論和常見問題就這些了,以后我會加一下我寫的工程上的代碼。有什么不對的地方,歡迎發郵件或者私信我,謝謝大家。

她很美!
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容