2010-07-08 62 views
0

我必須開發一個以特定方式使用推送通知的應用程序,而且我有一個非常棘手的問題:設備標記是否可以本地存儲在應用程序沙箱中? 這是爲什麼:這個應用程序應該實現一個通知系統,允許用戶從iPhone只訂閱一些特定的事件。 因此,要做到這一點,我需要在應用程序運行時隨時發送到我的數據庫的iPhone設備令牌,從我得到的,該設備令牌只avaliable當iPhone設備令牌:它可以存儲在iPhone上嗎?

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

是所謂的權利? 或者有什麼方法可以稍後檢索此信息?

謝謝。

回答

1

你應該把它存儲在手機的某個地方。 NSUserDefaults是一個體面的地方,因爲它不是一大塊數據,你可以在之後輕鬆找回它。我也建議將它保存在您的服務器上,並且只有在令牌更改時才更新它。然而

+0

蘋果不會拒絕我的應用程序,因爲我在本地存儲tolen 謝謝您見解;) – radada 2010-07-08 14:05:25

+0

不,你不會被拒絕,因爲你需要知道在哪裏發送通知,所以它需要存儲在服務器上。 – Elfred 2010-07-08 15:25:16

3

push notification programming guide建議您不要在本地存儲令牌:

「的應用程序應該註冊每次啓動時,給其提供當前標記,它調用registerForRemoteNotificationTypes:揭開序幕註冊過程。 「

...

「通過請求設備令牌,它每一次傳遞給供應商應用程序啓動時,你幫助確保雲服務提供商的設備當前令牌。如果用戶恢復備份到創建備份以外的設備(例如,用戶將數據遷移到新設備)時,他或她必須至少啓動一次該應用程序才能再次接收通知。如果用戶恢復備份數據到新設備或重新安裝操作系統,設備令牌會發生變化。此外,永遠不會緩存設備令牌,並給予到您的供應商; 隨時隨地從系統獲取令牌。如果您的應用程序之前註冊的,叫registerForRemoteNotificationTypes:?結果通過設備令牌給委託的iOS立即而不會產生額外開銷」

+1

任何想法爲什麼蘋果有這個建議?他們想要嗎?我們每次連接到我們的服務器,不應該通過緩存來優化。 – msk 2012-04-17 13:43:55

+0

可能絕對確保服務器始終擁有當前令牌,並且在令牌變化的情況下,推送通知不會突然停止ES。如果考慮到服務器也可以在反饋服務告知服務器時忘記令牌,那麼在客戶端進行可靠的緩存並不容易。此外,如果應用程序不會每次都提交令牌,則反饋消息的時間戳比較將無法正常工作。 – Zargony 2012-04-25 06:11:47

+0

不理解你的觀點。如果反饋服務表示令牌更改(對我們的服務器),我的應用程序也將獲得新令牌,並且我可以更新服務器。不是? – msk 2012-04-25 11:20:48

相關問題