2011-12-24 121 views
10

我試圖通過Ray Wenderlich的指南爲我的iOS 5應用程序實現推送通知:http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12iOS:如何註冊推送通知?

我插入以下到我的didFinishLaunchingWithOptions方法在我的AppDelegate:

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

當運行我的設備上的應用(沒有仿真器)彈出/警報告訴我要接受推送通知不顯示。我在線上插入了一個調試點,我可以看到registerForRemoteNotificationTypes被調用。

爲什麼沒有發生?

回答

7

也許,刪除你的應用程序,然後重試。該對話框只出現一次。但是我不確定當您重新安裝該應用程序時該對話框是否會再次出現。

你也可以去你的設置應用程序的通知中心,看看你的應用程序是否在列表中。

您還可以添加一個斷點並查看是否執行了didRegisterForRemoteNotificationsWithDeviceToken。

+0

我試圖從設備上刪除應用程序沒有任何成功。該應用程序不在通知中心。此外,'didRegisterForRemoteNotificationsWithDeviceToken'或'didFailToRegisterForRemoteNotificationsWithError'永遠不會被調用。 – dhrm 2011-12-24 14:46:42

+0

您是否設置了正確的捆綁標識符?您是否使用通配符應用程序ID? – YuAo 2011-12-24 14:55:03

+3

感謝您的回覆。問題在於,在啓用證書的推送通知後,我必須重新生成配給配置文件。 – dhrm 2011-12-24 16:40:54

3

我有這個確切的問題(使用相同的教程不少於),並發現我用錯誤的配置文件簽署了代碼。

具體來說,我只爲我的應用程序啓用了「Production」推送通知(因爲我不想讓證書兩次等),但是我的Xcode中的Build Settings使用「iPhone Development」作爲默認的「Code Signing Identity」 「發行」,而不是「iPhone發行」,因爲它應該是。這似乎是我的測試應用程序的默認設置。

希望我能阻止別人在同一個問題上浪費時間。

+0

相同的教程,相同的問題。我正在運行調試版本連接到設備,並具有開發人員簽名身份...當你說「我只啓用」生產「推送通知爲我的應用程序」,請你詳細說明這是什麼意思? – 2013-03-30 18:20:01

1

從iOS 8開始,有一種新方法。直接從UIApplication.h

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

調用,這將導致主要是application:didRegisterForRemoteNotificationsWithDeviceToken:application:didFailToRegisterForRemoteNotificationsWithError:應用委託給被調用。

注意:只有當應用程序成功註冊了registerUserNotificationSettings:的用戶通知,或者它已啓用後臺應用程序刷新時,纔會進行這些回調。