2012-02-22 68 views
2

我有一個使用自定義協議處理程序打開應用程序的網頁。一個鏈接到iTunes商店應用程序供人們下載Picup應用程序,另一個鏈接到fileupload://打開Picup應用程序。如何檢測網頁是否在iPhone的嵌入式瀏覽器中運行?

當頁面加載到另一個應用程序(例如1Step掃描儀條形碼掃描儀)內嵌的Safari中時,導航到這些自定義協議時,出現錯誤消息 - 錯誤,無法加載網頁!請再試一次。

我打算使用JavaScript來檢測網頁是否在嵌入式瀏覽器中加載並顯示一條消息,要求用戶使用Safari。

的一種方式是檢測用戶代理字符串

嵌入式

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 

的Safari

Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3 

然而,檢測在所述用戶代理字符串的存在/不存在字的Safari適用於所有版本的iPhone?有沒有更安全的方法?

+0

我必須提醒你,這很容易被欺騙,如果用戶使用另一個瀏覽器如海豚或另一個瀏覽器,你應該給他們啓動功能的選項。 – AlfredoVR 2012-02-22 04:07:43

回答

1

顯然是的,這是最好的方式。

即使Chrome for iOs在請求中也包含Safari這個詞,因此假設來自iOs的沒有「Safari」字樣的請求來自嵌入的UiWebKit控件,您應該沒問題。

0

您可以設置自定義的User-Agent爲您的請求......這裏有一個例子:

NSString *urlString= @"http://www.google.com"; 
NSURL *url = [NSURL urlString]; 
NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:url]; 
[requestObj setValue:@"myCustomAgent_Mathboy:)/1.0" forHTTPHeaderField:@"User_Agent"]; 
[webView loadRequest:requestObj]; 
+0

我擁有的是一個網頁,而不是一個iPhone應用程序。我需要檢測用戶是否在Mobile Safari或其他應用程序中訪問我的網頁 – 2012-02-22 04:07:03

+0

沒有得到您的問題。抱歉 – Ashraf 2012-02-22 04:09:23

相關問題