2016-04-04 5 views
1
を照会することができません

DevExpressPhoneGapで開発されたハイブリッドアプリがあります。iOSのPhoneGapアプリでwindow.open:このアプリはスキームファイル

私は

window.open('file:///var/mobile/Containers/Data/.../image.jpg', '_system'); 

を介してローカルのjpeg画像を開こうが、それは誤りerror: "This app is not allowed to query for scheme file"で失敗、iPhoneとiPad(iOSの最新バージョン9)に(もう)は動作しません。

(アプリは、それがwindow.requestFileSystem(LocalFileSystem.PERSISTENT, 0, ...)メソッドを介して得たフォルダにPhoneGapの方法FileTransfer.downloadを経由して、事前に画像をダウンロードしました。)

それは、Android上で正常に動作し、それが数週間前にもiPhone上でうまく働きました。私はそれがDevExtremeのアップデートのためにPhoneGapアップデートに関連していると思います。

以前はPhoneGap 3.7.0を使用しましたが、cli-5.2.0を使用しています。

これは既に似ていますが、すでに2歳で、私の質問を解決していないようです。この質問は(https://www.devexpress.com/Support/Center/Question/Details/Q486439)すでに見つかりました。

GapDebugを使用して、私はこれは、ログに表示:

<Warning>: THREAD WARNING: ['InAppBrowser'] took '38.211914' ms. Plugin should use a background thread. 
<Warning>: THREAD WARNING: ['File'] took '26.509033' ms. Plugin should use a background thread. 
<Warning>: -canOpenURL: failed for URL: "file:///var/mobile/Containers/Data/Application/9425CCB6-77F7-4337-B37C-7DB577C2F6B4/Documents/myDocuments/a96e7238-a502-49e6-bcd3-186937afc3cb/camera_1458208164206.jpg" - error: "This app is not allowed to query for scheme file" 

それはconfig.xmlのに追加する権限の問題が、何のいくつかの種類がありますか?

これは私のconfig.xmlにある:

<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" id="com.devexpress.apptemplate" version="1.0" versionCode="1"> 
    <name>ApplicationTemplate</name> 
    <preference name="phonegap-version" value="cli-5.2.0" /> 
    <preference name="permissions" value="none" /> 
    <preference name="prerendered-icon" value="true" /> 
    <preference name="android-windowSoftInputMode" value="adjustResize" /> 
    <preference name="SplashScreen" value="splash" /> 
    <preference name="SplashScreenDelay" value="60000" /> 
    <preference name="AutoHideSplashScreen" value="false" /> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="StatusBarOverlaysWebView" value="false" /> 
    <preference name="StatusBarBackgroundColor" value="#000000" /> 
    <preference name="KeyboardDisplayRequiresUserAction" value="false" /> 
    <feature name="http://api.phonegap.com/1.0/network" /> 
    <gap:plugin name="com.devexpress.plugins.devextremeaddon" version="1.0.1" /> 
    <gap:plugin name="cordova-plugin-ios-longpress-fix" version="1.1.0" source="npm" /> 
    <gap:plugin name="org.apache.cordova.camera" version="0.3.6" /> 
    <gap:plugin name="org.apache.cordova.file" version="1.3.3" /> 
    <gap:plugin name="org.apache.cordova.file-transfer" version="0.5.0" /> 
    <gap:plugin name="org.apache.cordova.inappbrowser" version="0.6.0" /> 
    <gap:plugin name="org.apache.cordova.media-capture" version="0.3.6" /> 
    <gap:plugin name="org.apache.cordova.media" version="0.2.16" /> 
    <gap:plugin name="org.apache.cordova.network-information" version="0.2.15" /> 
    <gap:plugin name="cordova-plugin-statusbar" version="2.1.0" source="npm" onload="true" /> 
    <gap:plugin name="org.apache.cordova.splashscreen" version="1.0.0" onload="true" /> 
    <access origin="*" subdomains="true"/> 
    <gap:plugin name="cordova-plugin-whitelist" source="npm"/> 
    <allow-navigation href="*" /> 
    <allow-intent href="*" /> 
</widget> 

私もhttps://github.com/apache/cordova-plugin-whitelistに応じて二行

<allow-navigation href="*" /> 
    <allow-intent href="*" /> 

を追加し、それが助けにはなりません。それはいないようだが -

私はイオン性、他のハイブリッドフレームワークは、また、CLIのバージョンなどの新しいPhoneGapのバージョン、とパーミッションの問題があるかもしれないと、上記の <allow-navigation href="*" />を使用する必要があることを彼らのドキュメント http://docs.ionic.io/docs/cordova-whitelistに言及していることを見ました私の場合に役立ちます。

===アップデート2:

=== ===更新

私はPhoneGapのの&コルドバのgithubの上の2枚のチケットを作成しました===

以下に示唆するように、私は今代わりにhttps://github.com/pwlin/cordova-plugin-file-opener2を使用しています。これはうまくいきます。

+1

私は同じ問題に直面しています。..私はこの問題を避けるためにcordova-plugin-file-opener2(https://github.com/pwlin/cordova-plugin-file-opener2)を使い始めました。 – gmartini20

+0

@ gmartini20ありがとう、これも私のために働く:) –

+0

@ gmartini20あなたのコメントを答えますか?ちなみに:file-opener2プラグインにはスペースがあるファイルパスに問題があるようですが、window.open()はそうではありません。 –

答えて

1

に書き込むためにそれを使用することができます...私はコルドバ - プラグインファイルopener2を使用して開始(github.com/pwlin/cordova-plugin- file-opener2)を使用して問題を回避します。私はTARGETPATHからそれらを削除空白に問題解決するために

targetPath = targetPath.replace(/ /g,'') 

をだから私のダウンロード/オープンコードは、そのようなものです:

$cordovaFileTransfer.download(url, targetPath, options, trustHosts) 
    .then(function(result) { 
    $cordovaFileOpener2.open(targetPath, mimeType) 
    }) 
+0

元の名前を残したかったのです。私はファイルをダウンロードするときにencodeURIを使って解決しました。 https://github.com/pwlin/cordova-plugin-file-opener2/issues/53 –

2

iOS 9では、検索するURLを設定する必要があります(開くことができるかどうかを知る)。

は、あなたがするinfo.plistを編集して、 LSApplicationQueriesSchemesキーとあなたがコルドバを使用しているとして、あなたがそれを行うことができます

<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>file</string> 
<string>whatsapp</string> 
<string>...</string> 
</array> 

を照会するスキームと文字列の配列を追加する必要があることを行うために、いくつかの異なる方法。

プラットフォーム/ ios内でXcodeプロジェクトを開き、info.plistファイルを編集できますが、場合によってXcodeプロジェクトが削除されて再作成され、変更内容が失われます。

別のオプションは、単にinfo.plistに書き込む単純なコードバース・プラグインを作成することです。あなたは

<config-file target="*-Info.plist" parent="LSApplicationQueriesSchemes"> 
    <array> 
     <string>file</string> 
    </array> 
</config-file> 

http://cordova.apache.org/docs/en/latest/plugin_ref/spec.html#platform

番目のオプションは、フックを使用することですplugin.xmlの上の設定ファイルのタグを使用する必要があることを行うために、フックがあるスクリプトファイル(ノードは、bash)であります実行され、あなたは、私は同じ問題に直面していたのInfo.plist http://cordova.apache.org/docs/en/latest/guide/appdev/hooks/index.html

+0

私はDevExtreme(http://js.devexpress.com/)とVisual Studioを使って作業しています(XCodeなし)、最後にPhoneGapが使用されます。そこに、私はいくつかのcordovaプラグイン(例えばホワイトリスト)を使用しています。プロジェクトのどこにでもinfo.plistファイルがありません。 (申し訳ありません、私の最初のハイブリッドアプリ、Phonegap/Cordovaを使用しています)。しかし、おそらく私はあなたのアドバイスをDevExtremeのサポートに転送します。ヒントをありがとう。 –

+0

ちょっとした注意:私のプロジェクトでは以前のiOS 9ではwindow.openが正常に機能していましたが、最近のPhoneGapのバージョンアップデート以来、もう機能しません。 –

+0

私はあなたに3つのオプションを与えました、少なくともプラグインオプションはあなたのケースで動作するはずです。 'canOpenURL'が使用されたときにエラーが表示されます。前のバージョンのcordovaはそれを使用せず、' openURL'を直接使用していました。エラーメッセージなしで起動が失敗する前に 'openURL'が数回動作します。あるいは、私があなたに言ったことをする必要がなかったXcode 6をdevexpressが使っていたかもしれません。プラグインを使用するには、https://www.devexpress.com/Support/Center/Question/Details/KA18816 – jcesarmobile

関連する問題