[英]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.