2012-01-25 29 views
11

什麼是最常用的策略? 我現在想實現如下:iOS推送通知 - 如何處理設備ID?

在應用程序啓動:

  • 獲取先前從一些本地存儲保存的設備編號
  • 獲得設備ID
  • 如果更改,保存新的ID,發送更新到服務器

這是正確的方法嗎? 本地存儲設備ID的最佳方式是什麼?

回答

5

最佳做法是每次應用程序啓動時向Apple推送推送設備標記(與Serg Shiyan提及的uniqueIdentifier不同)。這會讓Apple知道您的應用程序仍處於活動狀態。

見註冊遠程推送通知:

通過請求設備令牌,它每一次傳遞給供應商應用程序啓動時,你幫助,以確保供應商對設備的當前令牌。

Local and Push notifications Programming guide

根據我的經驗有許多的原因推符號可能是無效的。這些包括應用程序卸載和混合具有不同證書的應用程序(開發人員,專門針對沙箱/現場推送服務器運行)。通過按照建議每次開始發送令牌,它將爲您節省一些調試時間。

所以基本上沒有理由在您的應用程序運行時將推送令牌存儲在內存中。下次啓動應用程序時,您只需要一個新的(可能是同一個)。

+0

謝謝。唯一的問題是我仍然需要一些令牌傳遞給服務器來識別用戶/設備,我仍然需要以某種方式將其保存在設備上。我猜在用戶默認情況下。 –

+0

是的,識別用戶可能使用不同的機制(設備令牌,用戶帳戶等),存儲在鑰匙串,用戶默認或甚至iCloud中最好地完成。這樣,如果用戶在多個設備上使用該應用,甚至可能出現同一用戶註冊了多個推送令牌的情況。 –

3

「的字母數字字符串基於不同硬件細節唯一的每個設備。(只讀)(不建議使用iOS中5.0。相反,創建特定於應用程序的唯一標識符。)

@property (nonatomic, readonly, retain) NSString *uniqueIdentifier 

特殊注意事項 不要使用uniqueIdentifier屬性要創建一個特定於您的應用程序的唯一標識符,您可以調用CFUUIDCreate函數來創建一個UUID,並使用NSUserDefaults類將其寫入默認數據庫。 (Apple Inc)