iPadアプリのコードバカメラプラグインを追加しようとしていますが、navigator.cameraを使用してカメラを起動した後、背景(ホームボタンをタップ)。しかし、これは私がjavascript-Objective Cブリッジとして使用しているwebView:shouldStartLoadWithRequestイベントをリッスンしている場合にのみ発生します。使用アプリがバックグラウンドに移動したときにのみ、コルディアカメラが起動する
バージョン:
- コルドバ:5.4.1
- のiOSプラットフォーム/プラットフォーム固有のcordova.js:4.1.1
- のXcode:7.2
手順プロジェクトを設定するには:
- cordova create pluginTest com.pluginTest pluginテスト
- CD pluginTestは
- コルドバプラットフォームは、iOSを追加
- コルドバプラグインカメラをテストするにはコルドバ・プラグインカメラ
を追加し、私はコルドバで生成されたindex.jsファイルを、編集しているので、 onDeviceReady機能がどのように見えること:
onDeviceReady: function() {
app.receivedEvent('deviceready');
alert(navigator.camera);
navigator.camera.getPicture(function(imageData) {
alert('success');
},
function(message) {
alert('fail');
});
}
これは正常に動作するよう、カメラは警告後にポップアップ表示されます。
しかしMainViewController.mで、私はWebViewのために聞いていた場合:ようshouldStartLoadWithRequestイベント:
-(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType {
NSString* req = [[request URL] absoluteString];
NSLog(req);
return YES;
}
はその後、アプリのロード後、最初の位置の変更はその後、index.htmlにある - かつてnavigator.camera.getPictureが実行されます。上記のメソッドに当たる場所の変更は無限であり、urlは常に 'gap:// ready'です。ホームボタンがタップされると、要求の流れが停止し、カメラが表示されます。なぜこのようなことが起きているのでしょうか?
また、4.1.1 cordova.jsを使用していた場合、実際にshouldStartLoadWithRequestイベントをリスンするために、私のMainViewControllerをUIWebViewDelegateプロトコルに準拠させる必要がありました。この場合、問題が発生するにはUIWebViewDelegateプロトコルに準拠するだけで十分でした。奇妙なことに、以前のコードバスのプラットフォーム(3.9.2)を使用していた場合、CDVViewControllerはすでにshouldStartLoadWithRequestイベントをリスンしているようです。いずれの場合も、アプリの停止後にカメラが表示されます。
Xcodeでコンソールトレースは示しています
2016-05-04 19:02:51.015 plugTest2[3949:2271226] file:///var/mobile/Containers/Bundle/Application/FE21DCB1-7ADE-4754-80F1- 7055F8E1F450/plugTest2.app/www/index.html
2016-05-04 19:02:51.020 plugTest2[3949:2271226] Resetting plugins due to page load.
2016-05-04 19:02:51.759 plugTest2[3949:2271226] Finished load of: file:///var/mobile/Containers/Bundle/Application/FE21DCB1-7ADE-4754-80F1-7055F8E1F450/plugTest2.app/www/index.html
2016-05-04 19:02:57.149 plugTest2[3949:2271226] gap://ready
約百続く 'ギャップ://準備ができて' 次の4秒内のURL ...
2016-05-04 19:03:01.738 plugTest2[3949:2271226] gap://ready
2016-05-04 19:03:02.112 plugTest2[3949:2271226] Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
申し訳ありませんが、それは私のために働いていませんでした。私はどのフレームワークも使用していませんでした。デフォルトのコードバアプリだけでした。そのため、すべてのスクリプトはファイルシステムからロードされました。私はCSPメタタグに自己属性を持っていました。 私は、shouldStartLoadWithRequestブロックにあったものを処理するプラグインを作成しました。 – indGov