2013-10-10 75 views
6

我正在用Cordova 3.1構建iOS應用程序。我有一個鏈接,我想在Safari中打開。我已經安裝了org.apache.cordova.inappbrowser插件,它在我的iPhone(iOS 7)和模擬器(iOS5; iOS6.1; iOS7)上運行良好,但是如果我在所有設備上嘗試(iOS6)工作。Cordova 3.1在iOS6上的Safari中打開鏈接

有誰知道如何解決這個問題或在運行iOS6的真實設備上嘗試過嗎? 我使用這個代碼來打開鏈接:

window.open('http://www.google.nl', '_system'); 
+0

你已經看過[這個](http://stackoverflow.com/questions/17887348/phonegap-open-link-in-browser)嗎? –

+0

是的,我嘗試了所有可以在Google上找到的方法。 – Hugo

回答

3

以及我已經通過本機端(目標C)

實現了這個在「MainViewController.m」

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    NSString *str = url.absoluteString; 
    NSRange range = [str rangeOfString:@"http://"]; 
    NSRange range1 = [str rangeOfString:@"https://"]; 

    if (range.location != NSNotFound || range1.location != NSNotFound) { 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
    else { 
     return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
    } 
} 
添加這種方法

這爲iOS6 & iOS7提供'http'和'https'鏈接,並打開設備默認瀏覽器中的鏈接。

0

我知道這是一個老問題,但我也遇到過,只是寫了一個小插件來幫助它。悉達多的答案几乎是正確的,但是當我使用它時,它攔截了所有的網絡請求,包括我的index.html,這似乎將我的應用程序移動到Safari。我需要的是一種只處理顯式請求的方法,所以我可以在Safari中打開特定的(外部)URL。

關於Phonegap有很多類似的問題,似乎嵌入window.open的特殊處理與_system。這很好,但科爾多瓦沒有這個功能。最後,我寫了一個small plugin,它嵌入了足夠的Objective C(嚴格模仿了Siddhartha的回答),但由於插件的魔力,可以使用cordova.exec按需執行。我喜歡這個補丁到window.open以實現與Phonegap相同的功能,但這將是另一天,它並不真的影響這個答案。

據我所知,在現代科爾多瓦,這是唯一可行的策略。

相關問題