iOS 環信apns離線推送相關deviceToken和證書等問題

用過環信的知道,環信在APP掛在後臺超過3分鐘或者被kill之後,是不會收到消息了的,如果想要能繼續接受消息,需要註冊apns離線推送。在調試期間遇到一些棘手問題,現總結如下:

先附上環信社區配置apns的問題詳解:http://www.imgeek.org/article/825307548

1、添加推送證書

首先我們需要從開發者網站生成推送證書,開發環境和生產環境,兩個,安裝好之後鑰匙串中應該可以看到,這裏不多說證書製作的問題,環信文檔裏面有。

如果你之前就有保存,確保他們是正確的證書,也就是與你的APP bundle id 對應。

2、獲取不到deviceToken

按照集成文檔,代碼裏面注意填寫apnsCertName,並註冊apns推送,這時候問題來了,deviceToken拿不到!

排查:

看是否你的APP裏接入了多個需要獲取deviceToken的SDK,比如極光推送和環信,如果你是用兩個分類來處理極光和環信的話(AppDelegate+JPush,AppDelegate+EaseMob),這兩個分類裏都有實現didRegisterForRemoteNotificationsWithDeviceToken此方法,那可能有一個方法不走,被後執行的那個覆蓋掉了,就會出現一個分類裏面拿不到deviceToken的情況。

解決:

在能夠拿到的那個分類裏面,綁定相應的deviceToken。我這裏是在極光的分類裏,獲取deviceToken的方法下,同時調用極光和環信的綁定deviceToken方法!

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"deviceToken = %@",deviceToken);
    [JPUSHService registerDeviceToken:deviceToken];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [[EMClient sharedClient] bindDeviceToken:deviceToken];
    });
}
(環信3.0和之前版本的方法不一樣,注意)

只要綁定了deviceToken,在環信後臺即可看到對應賬號後面顯示了證書名稱。

3、綁定了token,收不到通知

綁定了token,環信後臺也看到賬號後面顯示了證書名稱,在殺掉APP後還是收不到消息通知。

1)首先確定你的證書是否與你的APP對應(從鑰匙串導出p12證書的時候有沒有點錯證書,代碼中寫的證書名與環信後臺的證書名是否對應);

2)如果對應,可以把證書以及證書密碼,bundle id發給環信,讓他們幫助看看該證書是否可收到通知(其實還是確定你的證書有沒有添加對,如果環信那邊測試也不能收到,您還是重新生成一次證書吧);

3)如果確定證書是對的,再看看targets->capabilities下的兩個開關有沒有打開,如果沒打開,打開再試試。(我就是這一步沒操作導致收不到,環信說Xcode8要注意打開,可我用的Xcode7也要打開!)


好了,暫時遇到這麼些問題,離線推送配置也是挺煩的。。。

發佈了33 篇原創文章 · 獲贊 8 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章