一. 首先明確什麼是UDID,UDID有什麼用(Unique Device Identification)ios5之後禁止獲取了 ios
UDID是由字母和數字組成的40個字符串的序,用來區別每個惟一的ios設備,包括iPhones, iPads, 以及 iPod touches,這些編碼看起來是隨機的,其實是跟硬件設備特色相聯繫的,另外你能夠到iTunes點擊查詢序列號 數據庫
UDID能夠關聯其它各類數據到相關設備上。例如,鏈接到開發者帳號,能夠容許在發佈前讓設備安裝或測試應用;也可讓開發者得到iOS測試版進行體驗。蘋果用UDID鏈接到蘋果的ID,這些設備能夠自動下載和安裝從App Store購買的應用、保存從iTunes購買的音樂、幫助蘋果發送推送通知、即時消息。 安全
在iOS應用早期,UDID被第三方應用開發者和網絡廣告商用來收集用戶數據,能夠用來關聯地址、記錄應用使用習慣……以便推送精準廣告。很多用戶也對此表示蘋果侵犯消費者隱私,所以在後期蘋過反對開發人員使用UDID。 服務器
如何獲取iOS設備UDID 網絡
鏈接你的ios設備(iPhone, iPad,iPod)到你的iTunes,而後在左邊的邊欄點擊你的設備,右邊就會顯示出你的設備信息,再用鼠標點擊一下你的序列號那一行,就出現UDID了,出現UDID後,直接按鍵盤的Ctrl+C(mac電腦複製快捷鍵爲爲Cmd+C)就能夠直接複製好了,粘貼就OK。 app
UDID是設備惟一設備識別符,移動廣告運營商和遊戲網絡運營商能夠經過這個udid識別玩家用戶並對用戶活動進行跟蹤,蘋果多是由於安全緣由拒絕。 ide
二.先簡單介紹下push的機制 函數
2.1 測試
客戶端經過 編碼
• (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types
這個函數向APNs(Apple Push Service)註冊push,types可標明接收的push的類型,聲音,數字等。
• (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
當app成功註冊通知後,會調用這個函數,並把deviceToken返回給應用。
2.2 整個遠程推送的過程及原理:
而後咱們的程序就會把返回的這個deviceToken以及設備的udid及軟件版本(淘寶 for iPhone仍是淘寶 for iPad)及系統版本,用戶名等發送到咱們的服務器(下圖中的provider)上,而後存儲在數據庫裏。
咱們註冊遠程通知,蘋果服務器端(APNS)會返回給應用程序一個device token,咱們把這個token給本身的服務器,而且保存到服務器數據庫裏。
要發送遠程通知時,咱們的服務器會取出要發送的設備的device token,結合發送內容,組成符合特定結構的字符串,將其發送給APNS.而APNS能夠根據與APNS創建鏈接的咱們服務器所使用的證書判斷是哪一個app請求發送的notification,繼而把這個notification發送到相應的設備上。
三. 區別
咱們知道device token是蘋果返回給咱們的NSData數據。那麼。
device token究竟是什麼呢?不一樣的app的device token相同嗎?一個設備會產生多個device token嗎?一個的device token 可能對應多個UDID嗎?
結論:device token是對APNS來講,設備的標識符,與app無關,因此在同一臺設備上,不一樣的app得到的device token是同樣的; 一個設備可能會產生多個device token, 一個device token也可能對應多個UDID,下面進行解釋。
對於APS來講,token是設備的標識符。device token不一樣於UIDevice的uniqueIdentifier(即UDID),由於出於安全和隱私緣由,當設備被擦除後,token必須變化。
總結自:http://blog.csdn.net/xyxjn/article/details/40898073和百度百科。