web-dev-qa-db-ja.com

PhoneGapアプリの外部リンクがうまく開かない

だから私はPhonegap 2.9.0のphonegapプロジェクトとPhonegapBuildでビルドしています。
アプリに外部リンクを取得しました。これをアプリ内で開くか、アプリの外部でデフォルトのデバイスブラウザーを使用します。どちらのソリューションでも大丈夫です。今日、私のアプリはリンクをアプリ内で開きますが、全画面表示になり、ズームできず、アプリに戻るためのボタンもありません...
私は何日間も解決策を見つけようとしています。ここで同じ種類の質問を調べていますが、何もうまくいきません。

誰かがこれについてのすべてを明確に説明できますか?それがまったく明確でない/簡単ではないと言えるので、さまざまな選択肢/パラメータは何ですか?

Q1:
私は尋ねることから始めます:config.xmlファイルで、stay-in-webview設定はphonegap 2.3.0で非推奨になりましたか?だからここで希望することは何もない?

Q2:私はwindow.openとターゲットシステム/空白/自己のプラグインInAppBrowserについてたくさん読んで試しましたが、違いはありません。私はInAppのままですが、ナビゲーションボタンがないので役に立ちません。
何か不足していますか?

plugin name="InAppBrowser" value="CDVInAppBrowser"
13
migswd

私は尋ねることから始めます:config.xmlファイルで、stay-in-webview設定はphonegap 2.3.0で非推奨になりましたね?だからここで希望することは何もない?

そのとおりです。 2.9を使用している場合は、この設定について心配する必要はありません。

私はwindow.openとターゲットシステム/空白/自己のプラグインInAppBrowserについてたくさん読んで試してみましたが、違いはありません。私はInAppのままですが、ナビゲーションボタンがないので役に立ちません。ここで何か不足していますか?

これを機能させるためにいくつかの問題がありました。彼らのドキュメントは少し散らばっていて、それをすべて読む必要があります。これが私がそれを機能させる方法です:

  1. Inappbrowserを使用する各ページに_<script src="phonegap.js"></script>_があることを確認してください
  2. Config.xmlにプラグインタグを含める必要はありません。私はそれらがコアビルド機能のappbrowserに2.5程度含まれていたと確信しています。
  3. アプリ内ブラウザでリンクを開くには、次のJavaScriptを使用します。

    _function openURL(urlString){
        myURL = encodeURI(urlString);
        window.open(myURL, '_blank');
    }
    _

    これにより、渡されたURLがinappbrowserで開きます。 window.open(myURL, '_blank');window.open(myURL, '_system');に変更すると、渡されたURLがシステムブラウザで開かれます。

  4. 最後に、アイテムのクリックは次のようになります。

    _<a href='#' onclick='openURL("http://www.urlyouwant")/>
    _

    または、オブジェクトにイベントリスナーを添付することもできますが、要点は理解できると思います。

さらに、InAppBrowserには多くのイベントリスナーをアタッチできます。これらに興味がある場合は、 documentation を参照してください。

重要!!!!ステップ1を忘れないでください!

お役に立てれば。

19
Dom

AndroidとiOSでURLを開く方法は2つあります。

FOR IOS次のコードを使用:window.open("http://google.com", '_system');

Androidの場合、次のコードを使用します:navigator.app.loadUrl("http://google.com", {openExternal : true});

10
Hassan Siddique

Domの答えはPhoneGap 2.9.0を使用するために機能します

[〜#〜]ただし[〜#〜]、彼はそれが非常に重要であると言ったように手順1に従います。私は https://build.phonegap.com を使用してアプリケーションをコンパイルし、<script type="text/javascript" charset="utf-8" src="cordova.js"></script>これをステップ1の代わりに機能させるには

他のすべてが失敗する場合は、この例を試してください。それは電話ギャップの従業員の一人によって書かれました:

https://github.com/amirudin/pgb-inAppBrowser

3
Dessertdesert

IF外部リンクが開かない、READ ON。

更新:2016-03-20 このトピックに関するチュートリアルを作成しました。

チュートリアル:ホワイトリストの例を使用したiframe内のPhonegap Build外部Webページ

これを読んでいると、この投稿がCordova/Phonegap/Phonegap Buildの2.9.0を参照していることに気付くでしょう。 2.xは正式に非推奨になり、サポートされなくなりました。

2.X を使用していて、アプリの開発を継続したい場合は、アップグレードしてください。

3.x、4.x、または5.x 以上でコンパイルしている場合は、読み進めてください。

外部リンクが開かないなどのグーグルの場合、ここにあなたが知っておくべきことがあります。 2015年9月と10月に、CordovaとPhonegapはいくつかの大きな変更を行いました。これらの変更は有効になりましたwhite-listing

White-listingは、使用する予定の外部リンクのホワイトリストをシステムに提供する必要があることを意味します。システム全体が混乱する可能性があります。私は現在ブログ投稿に取り組んでいますが、それまでは知っておくべきことです。

white-listシステムには3つの部分があります

  • ホワイトリストはconfig.xmlで提供されます
  • config.xmlに追加するホワイトリストプラグイン
  • すべてのWebページに配置されるCSP(コンテンツセキュリティポリシー)(SPAを実行する場合は1回のみ)

アプリケーションは簡単ではありません。バージョン3.xを使用している場合、これは必要ありません。 4.x以上を使用している場合は、これが当てはまります。 5.xを使用している場合は、さらに多くのルールが適用されます。私が言ったように、私はブログ投稿に取り組んでいますが、このホワイトリストのことはとても面倒なので、私は言葉を広める必要があります。

ここにあなたが始めるために必要なリンクがあります。

ここにさらに説明があります:
タイムアウトAJAX Cordova 5にリクエスト

さらに、Cordova/Phonegapの新しい開発者による のトップミスの#10を読むことができます

あなたが勇敢なら、あなたは私の * RAW * ノートを Cordova/Phonegap the white-list system で読むことができます

1
JesseMonroy650

window.openは、コールバックメソッドからは動作しないようです。 (多分これはブラウザの制限でしょうか?)それはOPの問題ではないかもしれませんが、知識が誰かを助けることを望みます。

0
Keith