簡體   English   中英

刪除應用后,獲取推送通知的設備令牌

[英]Get device token for push notifications after app was deleted

當您第一次安裝應用程序並想要注冊推送通知時,應用程序會詢問您是否要接收警報。 即使在刪除應用程序后,這也會永久保存在設置中。

基本上,為了保存令牌,我們這樣做:

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

但問題是,當應用程序從設備中刪除時,NSUserDefaults會被刪除,但推送設置卻沒有。 因此它不會再次詢問,因此不再調用委托方法,因此我不再擁有令牌,但仍然激活了push。

是否有機會在描述的場景中獲得令牌?

推送通知編程指南

應用程序應在每次啟動時進行注冊,並為其提供者提供當前令牌。 它調用registerForRemoteNotificationTypes:方法來啟動注冊過程。

通過每次啟動應用程序時請求設備令牌並將其傳遞給提供程序,您可以幫助確保提供程序具有設備的當前令牌。 如果用戶將備份還原到創建備份的設備或計算機以外的設備或計算機(例如,用戶將數據遷移到新設備或計算機),則他或她必須至少啟動一次應用程序再次收到通知。 如果用戶將備份數據還原到新設備或計算機,或重新安裝操作系統,則設備令牌會更改。 此外,永遠不要緩存設備令牌並將其提供給您的提供商; 始終在需要時從系統獲取令牌。 如果您的應用程序先前已注冊,則調用registerForRemoteNotificationTypes:會導致操作系統立即將設備令牌傳遞給委托,而不會產生額外的開銷。

回答你的問題:在每次啟動時調用registerForRemoteNotificationTypes:並使用最新的令牌。

在每次啟動應用程序時調用registerForRemoteNotificationTypes ,這樣你的didRegisterForRemoteNotificationsWithDeviceToken方法就可以調用,每次從APNS獲得你的設備令牌。 每次啟動時,應用程序的設備令牌都是相同的。

暫無
暫無

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

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