2012-02-09 54 views
0

正如標題所說,當我第一次啓動我的應用程序時,對話框詢問用戶是否需要不會顯示接收推送通知。但是,如果您進入設置,應用會出現在推送通知部分,並且應用會收到推送通知。「myapp想給你發送推送通知」消息沒有出現在我的應用程序中,但它仍然允許推送通知出現

我用這個來推送註冊,我錯過了一些東西:

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

我帶領相信,如果這是在didFinishLaunchingWithOptions會自動出現在用戶的提示?

編輯:我忘了補充一點,我也有一個didRegisterForRemoteNotificationsWithDeviceToken函數在那裏,以保留令牌。正如我所說的那樣,通知是在用戶收到它們的意義上起作用的,但是「你想接收它們」的彈出窗口從未出現 - 我認爲這是蘋果拒絕的理由。

+1

所以,當您從設備上刪除應用程序,然後重新安裝,你說這是在這裏它不是再問嗎? – twilson 2012-02-09 12:02:44

+0

是的。它似乎自動批准通知註冊。 – TheBestBigAl 2012-02-09 18:27:42

+1

我認爲這是預期的行爲,說實話,我不記得看到任何不同。除非您更改捆綁ID,否則我認爲它將保持授權。 (或者如果它在你刪除時被禁用) – twilson 2012-02-09 18:35:26

回答

3

像這樣的東西是需要保留令牌:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
NSString *token = [[[deviceToken description] 
         stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] 
         stringByReplacingOccurrencesOfString:@" " 
         withString:@""]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    [defaults setValue:[NSString stringWithFormat:@"%@", token] forKey:@"DeviceToken"]; 

    NSLog(@"APNs Device Token: %@", token); 
} 

看到這個線程也:didRegisterForRemoteNotificationsWithDeviceToken - Push Notifications

+0

糟糕,我確實在代碼本身有,但忘了在這裏添加它。感謝提醒我,我現在編輯了這個問題。 – TheBestBigAl 2012-02-09 10:44:12

+0

此外,它似乎一直在努力。當我將它交給其他人測試時,他們被問到是否想要接受推送通知。即使我卸載並重新安裝,我的設備仍然沒有問我。然後在更改產品名稱並重新安裝之後 - 它突然問我!我猜想它第一次問我,然後甚至在安裝之間還記得。 – TheBestBigAl 2012-03-09 17:48:50

+1

@TheBestBigAl,只是爲了證實這也發生在我身上。我處理它的方式是重置設備......我們不應該爲了測試而做這些事情...... – 2012-10-16 07:56:11