6

Cordova 3.1 で iOS アプリを作成しています。Safari で開きたいリンクがあります。org.apache.cordova.inappbrowser プラグインをインストールしましたが、iPhone (iOS 7) とシミュレーター (iOS5;iOS6.1;iOS7) では問題なく動作しましたが、すべてのデバイスで (iOS6) を試してみると、動作しません。動作しません。

これを修正する方法を知っている人、または iOS6 を実行している実際のデバイスで試した人はいますか? このコードを使用してリンクを開きます。

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

2 に答える 2

3

私はこれをネイティブ側(Objective 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」リンクの両方が処理され、デバイスのデフォルト ブラウザでリンクが開きます。

于 2014-01-03T04:43:34.277 に答える
0

これは古い質問であることは知っていますが、私もそれに遭遇し、それを支援する小さなプラグインを作成しました. Siddhartha の答えはほぼ正しいですが、私がそれを使用すると、私の へのリクエストを含むすべての Web リクエストが傍受され、index.htmlこれにより私のアプリが Safari に移動したように見えました。私が必要としていたのは、明示的な要求のみを処理する方法でした。そのため、Safari で特定の (外部) URL を開くことができました。

window.openwithの特別な処理が組み込まれているように見える Phonegap についても、同様の質問が多数あります_system。それはいいことですが、Cordova にはこの機能がありません。

最後に、十分なObjective Cを埋め込む小さなプラグインを作成しました(シッダールタの答えに密接にモデル化されています)が、プラグインの魔法により、を使用してオンデマンドで実行できますcordova.exec. これをwindow.openにパッチしてPhonegapと同じ機能を実現したいと思いますが、それは別の日になり、この回答には実際には影響しません。

私が知る限り、近代的な Cordova では、これが唯一の実行可能な戦略です。

于 2015-02-23T21:33:38.093 に答える