NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
上面的代碼給出了我的兩個應用程序相同的電話在兩個不同的標識符 - 不同的包ID而是兩個應用程序的ID和兩個開發配置配置文件在我的蘋果帳戶創建。IdentifierForVendor
我的理解是,如果團隊ID相同,那麼供應商的標識符在這兩個應用程序中應該是相同的。錯誤在哪裏?我不明白?
NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
上面的代碼給出了我的兩個應用程序相同的電話在兩個不同的標識符 - 不同的包ID而是兩個應用程序的ID和兩個開發配置配置文件在我的蘋果帳戶創建。IdentifierForVendor
我的理解是,如果團隊ID相同,那麼供應商的標識符在這兩個應用程序中應該是相同的。錯誤在哪裏?我不明白?
它,因爲你有2分不同的組合編號的。
供應商由前兩個點分隔的字段標識。 因此,com.a.app1和com.a.app2具有相同的供應商(com.a),但com.b.app3擁有不同的供應商(com.b)
所有我的應用程序來自同一供應商。 :)我如何理解文檔,所有我的應用程序應該有相同的供應商ID。這是一直在同一個ID,直到我的至少應用程序安裝在設備上。可能,我錯了。 :) – Pavel 2013-06-27 06:53:18
你解決了這個問題嗎?今天,經過長時間的測試後,我得出結論認爲,在6.1.3之前的iOS版本中,identifierForVendor不穩定。對於同一個應用程序,您可以在同一設備上獲得兩個不同的identifierForVendor字符串。 – Maggie 2013-09-03 21:10:18
我如何記住,即使在應用程序升級之後,此ID已更改 - 這是我開始測試此identifierForVendor方法的原因。我可能是錯的,那是半年前。它應該再次測試。 – Pavel 2013-10-11 11:44:23
我現在正在解決同一個問題。 「回答」是identifierForVendor每其預期設計打破了蘋果文檔內:假定
束ID是在反向DNS格式,並且第一兩種組分被用於產生一個供應商ID。例如,com.example.app1和com.example.app2似乎具有相同的供應商ID。
實際情況是,identifierForVendor僅適用於使用相同配置配置文件和簽名證書的應用程序。作爲一個例子,我在我的企業環境中有多個應用程序,所有這些應用程序都是com.mycompany ..
對於使用bundleID com.mycompany.app1。*及其供應配置文件的應用程序,identifierForVendor與com.mycompany.app2使用相同的簽名證書,但不同的配置文件產生不同的identifierForVendor值。
編輯:這隻發生在iOS7中,但在iOS6中正常工作。我昨天測試了一段時間,可以在7天內複製這個問題,但是在6天內我得到了預期的結果。
EDIT2: Apple已經移動了identifierForVendor上的目標帖子。他們顯然確定了他們的算法問題,而不是解決問題,而是改變了iOS版本之間的標識符功能並進行了文檔更改。更新文檔鏈接如下。 SMH。
供應商不再由團隊ID確定的,而是由或者:
這取決於設備是運行iOS 6還是7+。
按照-[UIDevice identifierForVendor]文檔:
通常,供應商通過由應用商店提供的數據來確定。 如果應用程序未從應用程序商店安裝(例如企業 應用程序和應用程序仍處於開發中),則根據應用程序的包ID計算供應商標識符 。捆綁ID被假定爲 處於反向DNS格式。
在iOS 6上,捆綁ID的前兩個組件用於 生成供應商ID。如果軟件包ID只有一個組件,則使用整個軟件包標識號 。
在IOS 7上,除最後一個組件 之外的所有組件都用於生成供應商ID。如果軟件包ID僅包含一個 組件,則使用整個軟件包ID。
現在我用[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]替換了identifierForVendor; ,它按預期工作。 – Pavel 2013-03-21 08:56:07
你定位的是哪個版本的iOS? – user 2013-05-16 21:04:48
那一刻的最新消息。可能6.1 – Pavel 2013-05-18 07:26:14