PhoneGap を使用して、モバイル デバイスのネイティブ機能を使用します。内部的にはどのように機能しますか? JavaScript メソッドから PhoneGap の実装クラスにアクセスするにはどうすればよいですか? 誰かがこれを説明できますか?
4 に答える
Cordova iOS がメッセージを WebView に渡す方法について詳しく調べました。これは、iOS から JavaScript にメッセージを渡す方法です。
クラスにはUIWebView
と呼ばれるメソッドがありstringByEvaluatingJavaScriptFromString
ます。
iOS Cordova プロジェクトのいくつかのファイルを見ると、JavaScript が、その関数に対して実行される文字列として渡されています (例: CDVPlugin.m )。
iOS が新しい DOM ノード ( <script>alert('from iOS');</script>
. 上記で参照されているドキュメントには、次のように記載されているという点で、後者だと思います。
JavaScript の実行時間は、最上位のエントリ ポイントごとに 10 秒に制限されています。スクリプトが 10 秒以上実行されると、Web ビューはスクリプトの実行を停止します。これはコード内のランダムな場所で発生する可能性が高いため、意図しない結果が生じる可能性があります。この制限が課されるのは、JavaScript の実行によってメイン スレッドがブロックされる可能性があるためです。そのため、スクリプトが実行されている場合、ユーザーは Web ページを操作できません。
JavaScript の割り当ても 10 MB に制限されています。JavaScript の合計メモリ割り当てでこの制限を超えると、Web ビューで例外が発生します。
そのUIWebViewの内部状態への特別なアクセスなしに、実際にこれらの制限を課す方法がわからないので、新しいDOMノードを挿入しているだけではないと思います。
完全にはわかりませんが、ここに情報チュートリアルがあります。開始するのに適した場所です。
ソース コードは公開されているため、どのように実装されているかを調べることができます。これはプラットフォームごとに異なるため、すべての OS をカバーする単一の回答を得ることはできません。iOS では、独自の URL スキームを使用してブラウザーの場所を強制的に変更することにより、ネイティブ コードを呼び出すことができる UIWebView を使用して行われます。この変更により、ネイティブ コード内のメソッドが呼び出され、URL スキームと渡されたパラメーターを調べてから、関連する処理を実行できます。次に、iOS 内の Objective-C から Javascript を呼び出す方法があり、これを使用して結果を Javascript 側に戻すことができます。
詳細なプロセス全体は長すぎて、ここの回答で説明できません。
もちろん、他のプラットフォームでの実装方法は異なります。
このメカニズムは API の背後で抽象化できるため、PhoneGap アプリは特定のプラットフォームの実装の詳細の違いを認識しません。
詳細が必要な場合は、PhoneGap フォーラムで質問するか、ソース コードを参照してください。