2012-02-08 56 views
13

我正在尋找唯一標識iPhone,以便我們的服務器可以響應一些自定義HTML。我希望能夠在Safari中和應用中的嵌入式瀏覽器中識別手機。由於每個應用程序都是沙盒,因此Cookie不起作用。移動Safari和iOS中的應用程序的唯一標識符

謝謝

+0

你能澄清你所說的「唯一標識」的意思 - 你的意思是你要能夠告訴當同一手機訪問您的網站或者通過一個應用程序或通過移動Safari瀏覽器? – 2012-02-08 16:21:44

+0

燁我想告訴當手機訪問我們的網站,應用程序或移動瀏覽器 – 2012-02-08 16:22:55

回答

10

這其實很辛苦。

你可以使其啓動移動Safari瀏覽器,當它第一次打開,並設置一個cookie的應用程序,然後重定向回使用自定義URL方案的應用。

這可能看起來很奇怪,但它實際上是Facebook的共享登錄系統是如何工作的,它允許兩個應用程序和瀏覽器沙箱自己的「突破」,並共享相同的唯一的Cookie ID。

當然,除非你每次應用程序啓動,這可能會招人煩的時間做重定向你不會不知道,如果用戶已經刪除了cookie中。

UPDATE:

由於iOS的9,你可以使用SFSafariViewController您的應用程序,而不是重定向到Safari瀏覽器應用程序裏面,現在打開網頁。這仍然有點笨拙,但可能比雙應用程序切換更可取。

+0

偉大的想法,但根據http://stackoverflow.com/questions/8636202/generating-a-non-udid-identifier-in- javascript-to-identify-ios-devices-unique在移動版Safari中默認禁用Cookie。我有什麼不對(請原諒我的一個新手問題,我是一個真正的iOS開發新手)? – 2012-06-05 13:16:46

+0

第三方Cookie被禁用,但默認情況下啓用了第一方(與您所在頁面位於同一域的人)。 – 2012-06-06 18:35:43

12

這不是直接可行的,但隨着網站的合作有可能爲尼克·洛克伍德曾表示,這裏是他所描述的方法,大大擴展版:

您的應用程序應該這樣做:

  1. 啓動移動Safari瀏覽器,使用[[UIApplication sharedApplication] openURL:url];
  2. URL應該是一個特殊的一個,例如。 http://yourwebsite.com/give-ios-app-the-cookie
  3. 在您的網站,當URL啓動,發出重定向到your-app-url-scheme:cookievalue=<somevalue>(如angrybirds:cookievalue=hh4523523sapdfa
  4. 當你的應用程序代理接收- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation過程中的URL,以獲取cookie值

請注意,您不應該在應用程序啓動時自動執行此操作 - 用戶將看到傳輸到Mobile Safari並返回,這不是一個好的用戶體驗,Apple會拒絕您的應用程序(Apple也認爲這是「將用戶的個人數據上傳到服務器而無需他們事先同意「)。

這將是更好地做在響應用戶,關注用戶體驗 - 例如。等待用戶點擊「登錄」按鈕,然後執行該操作,如果用戶未登錄到您的網站,http://yourwebsite.com/give-ios-app-the-cookie應向用戶顯示safari中的登錄屏幕。如果用戶已登錄,則可以在重定向用戶之前,在Safari中短暫顯示「自動登錄...」屏幕中的一秒或兩秒。

相關問題