《筆記》iOS deviceToken的獲取時機及推送相關

最近幾天在做一個新項目,需要用到deviceToken,於是有了以下的問題:
1、 deviceToken是什麼時機能獲取,即

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
// Tells the delegate that the app successfully registered with Apple Push Notification service (APNs).

印象中是在點了彈出通知權限的alert的同意鍵,然後纔開始註冊apns,然後回調該方法,獲取deviceToken。
但是如此是滿足不了當前的需求的,我需要無論允許還是拒絕,都能拿到deviceToken,解決方案爲:
勾選Background Modes中的remote notificationbackground fetch,即可達到在註冊notificationSettings的時候獲取到deviceToken,也就是彈權限請求alert的同時。(注:其實只勾選前者即可)

2、 由上引發思考,上面勾選的兩個設置有什麼作用?
說來慚愧,這倆都是iOS 7就引入的新特性了。。。。一個是後臺應用刷新,一個是靜默推送(Silent Remote Notifications),網上關於這倆的資源還是很多的,也沒啥可說的,照着文檔來就行

3、 爲什麼勾選(打開)靜默推送就可以不經過用戶允許,直接拿到deviceToken 呢,那麼是不是可以無視用戶的通知權限來進行靜默推送呢?於是測試了一下,果然如此,在我點擊了拒絕之後,仍然能收到靜默推送
這裏寫圖片描述

同時發現,app前臺運行時,普通推送也能收到,只是不會展示,猜測後臺時也會收到,等回頭不忙了,再寫個UNNotificationServiceExtension 測試一下

推送作爲一個很重要的功能,幾乎每次iOS大版本都會有改動,用起來還是謹慎一些爲好,多測試一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章