2013-01-08 58 views
2

標題說明了這一切...我在每次啓動應用程序時調用registerForRemoteNotificationTypes。它第一次非常出色。有一個設備令牌,但我所做的只是NSLog。每次應用程序註冊時都會調用didRegisterForRemoteNotificationsWithDeviceToken?

現在再次運行該應用程序... didRegister *和didFail *回調都沒有執行。我的代碼/網絡沒有任何變化。

這是正確的行爲?我在StackOverflow上看到了相互矛盾的答案。 This SO answer意味着每次都應該發生didRegister *回調。有人說你永遠不應該緩存設備令牌。那麼,沒關係......但是我第一次得到一個令牌時沒有做任何事情,所以現在它已經丟失了?通常情況下,應用程序應該將令牌推送到我的推送通知服務器,但我只是處於開發階段,並沒有這樣做。所以現在這個令牌丟失了,我的應用程序不會再收到另一個?這看起來很奇怪,因爲蘋果文檔說在每個應用程序啓動時調用registerForRemoteNotificationTypes!如果您每次都不回收新的(或回收的)令牌,這有什麼意義?或者還有其他事情在這裏發生?

回答

2

didRegisterForRemoteNotificationsWithDeviceToken應該每次都執行。

我的手機一定是處於奇怪狀態。我終於注意到,在Notifications Center中,該應用程序已列出,但應用程序名稱下方沒有徽章,警報或聲音文本。我手動編輯了設置並啓用了這些通知。然後,當我下次運行該應用程序時,會觸發didRegister回調。

無法通過禁用警報/標誌/聲音來複制不良狀態。每次都會收到回調。要把它記下來,以免僥倖。

相關問題