2013-10-22 44 views
16

我在一個設備中有兩個應用程序。對於iOS 7,兩個應用程序都發送不同的設備令牌,但對於iOS 6,這兩個應用程序都發送相同的設備令牌。ios 7設備令牌對於同一設備不同

根據我的理解,設備令牌必須與一個設備中的所有應用程序相同。 iOS7與iOS6有什麼不同嗎?

回答

15

這一個也是helpful.Please看到1點在這篇文章中: https://support.urbanairship.com/customer/portal/articles/1321513-how-ios-7-handles-push-differently

「在iOS 7之前,設備令牌在給定設備上的所有應用程序安裝中都是相同的。手機上的不同應用程序,無論Tap Tap Revenge還是USA Today,都會使用相同的地址(即設備令牌)將推送通知路由到您。與消息配對的安全憑證可以確保將其發送到正確的應用程序。 在iOS 7上,Apple已經更進一步,確保設備令牌在每個應用程序安裝中都有所不同。 「

+3

實際上該文章回答了這個問題,應該是被接受的答案。也許你應該複製文章的主要觀點到這個答案,因爲鏈接唯一的答案不鼓勵在這裏。 – Eran

+0

由於幾個原因,不鼓勵鏈接的答案,其中最不重要的是鏈接腐爛。其實,上面的ar Ticle已經轉移到https://support.urbanairship.com/customer/portal/articles/1321513-how-ios-7-handles-push-differently –

+0

我還添加了該文章中的段落。 – Paragon

21

UPDATE:

我想我得快速閱讀這一個位。請注意我的修訂。如果答案符合您的使用案例,請隨時接受。

根據您的描述,我會建議在iOS6和iOS7之間對令牌生成進行基礎更改。爲了更仔細地檢查此行爲,我建議您查看Local and Push Notifications Programming Guide。在「調度,註冊和處理通知」部分的指南中,您會發現Apple的這一聲明。

設備令牌可以改變。您的應用每次啓動時都需要重新註冊 - 在iOS中,通過調用UIApplication的registerForRemoteNotificationTypes: 方法,並在OS X中調用 registerForRemoteNotificationTypes:NSApplication的方法。傳遞給此方法的參數 指定應用程序希望接收的 通知的初始類型。用戶可以在任何時候修改 啓用的通知類型,使用iOS設置或 系統偏好設置在OS X可以查詢當前啓用的使用的UIApplication的enabledRemoteNotificationTypes財產 或 的NSApplication的enabledRemoteNotificationTypes財產 通知類型。系統不會爲您的應用啓用徽章圖標,顯示警報 消息或播放警報聲音,即使它們在 通知有效內容中指定了這些通知類型也是 。

參考:

蘋果使用設備的令牌當用戶同意從Apple推送服務接收遠程通知。

典型地,該設備令牌在下面的方法獲得:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

deviceToken 標識了設備到APS的標記。令牌是一種不透明的數據類型,因爲這是供應商在向設備發送通知時需要提交給 APS服務器的形式。出於性能原因,APS服務器 需要二進制格式。

請注意,設備令牌與UIDevice的uniqueIdentifier 屬性不同,因爲出於安全和隱私的原因,它必須在設備被擦除時更改。

Device Tokens Used in the Apple Push Notification Service

也有到的UIDevice標識符顯著的變化(蘋果公司已經限制使用)。我建議如下記載:

2

雖然這是非常晚的答案,但我想分享我對i0S 9.2.1所做的測試 設備令牌對於每個應用程序都是唯一的在設備中,每次安裝應用程序時都會生成一個新的設備令牌,據我所知,蘋果已經在發佈iOS7後更改了設備令牌策略