2013-07-19 30 views
6

我想處理像一個網址:http://www.something.com/product/3/這樣:處理HTTP URL以我的應用程序(如果已安裝)

  • 如果您已經安裝=>與應用程序處理它的應用程序。
  • Else =>用Safari瀏覽器處理它。

難道這可能嗎?

的想法是,我可以通過電子郵件發送該URL,如果接收器已安裝的應用程序,然後應用程序上揚,做一些事情,如果沒有安裝只是通過Safari打開它。

我知道的定製方案,其做工精細的應用程序,但他們顯然是因爲他們不是http協議沒有在Safari工作。

+0

不,這是不可能沒有越獄。您可以讓您的網站嘗試重定向到您的自定義方案的URL,但... –

+0

試試這個:A.讓你的應用程序處理html擴展。 B.用HTML文件(起始文件或重定向文件等)發送電子郵件鏈接 – user523234

+0

@SimonM我認爲你是唯一的解決方案。要使用常規鏈接(http://something.com/product/3/)並在該網頁中嘗試打開帶有myscheme://something.com/product/3/的彈出窗口,該窗口將打開該應用(如果已安裝)或顯示一些東西(可能會顯示谷歌搜索,因爲它不理解myscheme作爲網址)。 – jobima

回答

2

是的,你可以通過使用URL方案做, 首先在Info.plist文件中創建自己的自定義URL方案

通過進入菜單,然後單擊編輯>添加項目添加一個新行。通過添加新項目來設置URL類型項目。展開網址類型鍵,展開項目0,然後添加一個新項目「URL方案」。爲「URL方案」的第0項填入「readtext」,填寫「URL標識符」的公司標識符。

然後解析您的網址爲不同的網址爲相同的網址方案打開您的應用程序與不同的屏幕..在這裏,我只顯示警報,用於打開您的特定頁面,根據您的鏈接..如果應用程序未安裝那麼它將在網絡瀏覽器中打開。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    // Display text 
    UIAlertView *alertView; 
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    alertView = [[UIAlertView alloc] initWithTitle:@"Text" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
    return YES; 
} 

應用:handleOpenURL:(用於較早的iOS 4.1) 應用:的OpenURL:sourceApplication:註釋:(用於以後的iOS 4.1)。

+1

如果應用程序未安裝? Safari會理解readtext://something.com並翻譯成http://something.com? – jobima

+0

U可以使用canOpenURL:檢查是否可以打開或不重定向到瀏覽器:-) .. –

+1

這並不能解決問題,因爲要運行canOpenURL我需要安裝該應用程序。問題仍然是一樣的:當應用程序沒有安裝我只是有一個網站Safari瀏覽器不明白(myscheme://something.com) – jobima

2

1)創建您的應用程序自定義URL方案。如果您不知道如何創建自定義URL方案,請點擊以下鏈接:http://www.idev101.com/code/Objective-C/custom_url_schemes.html

2)然後將以下腳本添加到您希望應用打開的URL。

<script language="javascript" type="text/javascript"> 
    var iOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false); 
    var appUrlScheme = "myappscheme://" + document.URL; 
    if (iOS) { 
     window.open(appUrlScheme, "_self"); 
    } 
</script> 

劇本是自我解釋,如果它的iOS設備,然後它只是試圖打開當前的URL與您的自定義URL方案即myappscheme://whateverurl.com'. If you app is installed on the device then iOS is going to launch your app and pass this URL to handleOpenURL function, otherwise mobile safari will silently ignore窗口。open`打電話,你的網頁將加載正常:

3)在你的AppDelegate實現handleOpenURL回調方法來處理的網址:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    NSLog(@"url: %@", url); 
    NSLog(@"query string: %@", [url query]); 
    NSLog(@"host: %@", [url host]); 
    NSLog(@"url path: %@", [url path]); 

    //REDIRECT USER TO A VIEW CONTROLLER 

    return YES; 
} 
+0

當應用程序未安裝時,這不起作用 - 我收到一條錯誤消息:「無法打開頁面。由於地址無效,Safari無法打開頁面。」 – davidwebster48

相關問題