0

phonegap アプリケーションでホストされている Web アプリがあります (これには phonegap ビルドを使用します)

セットアップは簡単ですが、この場合はそれほど重要ではありません。悪魔は細部に宿る場合があるので、とにかく教えてあげましょう。:)

詳細

phonegap アプリは、実際には 1 つの HTML を使用した最小限のセットアップです。その html は実際にはスプラッシュスクリーンとして機能します。HTML の背景には画像があります。ページを外部 URL にリダイレクトするように設定されたメタ更新タグがあります。これから myurl.com と呼びます。

myurl.com の Web サイトは、jquery mobile と angularjs を使用して構築されています。私はそのアダプターを使用して、ページの読み込み時に dom を操作したい両方のフレームワークの問題を処理します。これは、アプリが実際にホストされ、アプリケーション全体が実行されるドメインです。

セットアップ

1 つのページに外部ページへのリンクがあります。そのページには javascript のブートロードがあり、いくつかの派手なものが表示されます。リンクをクリックすると、アプリはそのページに移動します。それは素晴らしい!実際にはすべてのデバイスで動作します。デスクトップ ブラウザーと Android アプリで、ハードウェア (またはブラウザー) の [戻る] ボタンをクリックするだけで、myurl.com のアプリに戻ります。一方、iPhoneには戻るボタンがありません:(

私の最初の試みは、戻るボタン/リンクとファンシー ページをホストする iframe を持つランディング ページを作成することです。コンソールでいくつかの例外/エラーが発生しても、デスクトップとアンドロイドで動作します。iPhone にはロードされません。セキュリティ上の問題しか考えられません。iframe でやろうとしていることがうまくいかないと言われましたが、これは本当だと思います。

どうすればこれに対処できますか? 私は実際に次のようにInAppBrowserを試しました:

var ref = window.open(url, 'random_string', 'location=yes'); 

そして、config.xmlにこれがあることを確認しました:

<preference name="stay-in-webview"            value="false" />

これも私のページに追加しました:

<script stype="text/javascript" src="phonegap.js"></script> 

phonegap ビルドは正しいバージョンを含めることを約束しているため、phonegap.js ファイルを省略します。

戻る可能性がなくても、同じビュー/アプリでページを開きます-通常の方法でリンクを開くだけの場合と同じ結果が得られます。

{ここにジェダイの名前を挿入}、助けてください、あなただけが私の望みです!

編集: 問題が見つかりました。phonegap.js ファイルはデバイスに自動的に展開されるため、最初の index.html (メタ リフレッシュを含む) のみが実際に正しくリンクされます。myurl.com のページがファイルにリンクしていません。phonegap.js を myurl.com に配置しましたが、動作しています。唯一の問題は、phonegap.js がデバイスごとに異なることです。つまり、phonegap.js を選択したデバイスのみが機能しています。他のデバイスは壊れています。

ネイティブアプリファイルにリンクできる場所はどこですか? file:///{path}/phonegap.js を試しましたが、うまくいきません。デバイスごとに異なるパスを確認/推測できますが、iPhoneの場合は Payload{name}.app\www - そこからロードされません...私も試しました

http://localhost/phonegap.js

しかし、それもうまくいきません。

何か案は?

最終編集

製図板に戻って、代わりにすべての html ファイルをデバイスに配置することにしました。代わりに、JSONP を ajax API に実装して、API を myurl.com に公開し、電話からアクセスできるようにします。それはおそらく、phonegap アプリを作成するための意図された方法でもあります-私は他のアプローチがもっと好きでした...

4

1 に答える 1

0

実は先日、このような質問に答えたばかりです。ここで見つけることができます。要するに、以下を参照してください。

  1. <script src="phonegap.js"></script>inappbrowserを使用したい各ページにあることを確認してください
  2. config.xml にプラグイン タグを含める必要はありません。2.5 前後で、コア ビルド機能に inappbrowser が含まれていたと確信しています。
  3. inappbrowser でリンクを開くには、次の 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")/>
    

また、使用している phonegap のバージョンによっては、stayinwebview が減価償却されます。

***あなたの編集に基づく: プロジェクト ディレクトリに phonegap.js を置かないでください。アップロードしてビルドすると、プロジェクトに含まれます。

于 2013-09-12T12:22:58.897 に答える