簡體   English   中英

推送通知委托回調沒有被調用

[英]Push Notification delegate call backs are not getting called

我正在通過調用以下代碼來注冊推送通知:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];

但在極少數情況下,不會調用以下委托:

- (void)application:(UIApplication *)iApplication didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)iNewDeviceToken {

甚至沒有調用以下方法:

- (void)application:(UIApplication *)iApplication didFailToRegisterForRemoteNotificationsWithError:(NSError *)iError {

這可能是什么原因。 收到設備令牌后,我將繼續執行我的應用程序流程。 因此,在一些罕見的情況下,我的應用程序會掛起。

有什么線索嗎?

根據文檔,在設備與推送服務器建立持久連接之前,不會發生任何回調。 因此,如果沒有可用的 wifi 或數據連接,回調將不會發生 - 蘋果不會將此視為錯誤情況。 據我所知,唯一可能導致 didFail... 回調的錯誤是不正確的證書/應用程序權限問題(開發問題),或者用戶拒絕了權限(盡管我只能偶爾重現這個通過更改日期並關閉手機)。

您必須在配置文件中啟用推送通知,並在 Developer Portal 中使用 App Id 進行設置。 然后它應該工作。

還有一件事:如果您的手機已root/越獄以用於其他網絡等,您將遇到問題。 我的手機已經root,沒有一個代表被叫到。 我讓一個同事把它放在他們的 iPad 上,效果很好,所以我知道代碼沒問題。

所以,我在手機上重新安裝了操作系統,它開始工作了。

線索就在那里:當它失敗時你會得到一個NSError實例。 所以要弄清楚它為什么會出錯,檢查NSError看看它告訴你什么。

您可能至少應該在您的應用程序中處理這種情況,例如顯示錯誤消息“無法注冊應用程序,請重試...”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM