ios9からhttpsアクセスを防ぐというApp Transport Securityですが、cordovaが標準でどのように扱っているのかよくわかりませんでした。
config.xml
<access origin="http://hogehoge.com" />
<access origin="http://fugafuga.com" />
と記載していると {アプリ名}-info.plistには以下のように自動的に追加されています。
platform/ios/{アプリ名}/{アプリ名}-info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>hogehoge.com</key>
<dict/>
<key>fugafuga.com</key>
<dict/>
</dict>
</dict>
やろうとしていることは<accsss>に記載されたURLへは例外として通してくれようとしてくれているとは思いますが、理解が全く足りていませんが、まずは
NSAllowsArbitraryLoads を falseにして、NSExceptionAllowsInsecureHTTPLoadsをそれぞれのurlのdictに加えることが必要ではないでしょうか。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>hogehoge.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>fugafuga.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
これでhttp://hogehoge.comにアクセスできるようになりました。
しかし、ビルドの度にplistは書き換えられるので、フックして書き換える処理をいれるか、cordovaのビルド後に最後に修正というのがよいのでしょうか。
2015年11月16日月曜日
2015年11月5日木曜日
Plugin doesn't support this project's cordova-ios version. cordova-ios: 3.9.2, failed version requirement: >=4.0.0-dev
エラー内容
Plugin doesn't support this project's cordova-ios version. cordova-ios: 3.9.2, failed version requirement: >=4.0.0-dev
Skipping 'cordova-plugin-whitelist' for ios
エラーの内容通りで cordova-whitelist 1.1.0 はまだ正式リリースされていない cordova ios 4.0.0以上に対応らしいです。
whitelistのバージョンを1.0.0に落とせばいいらしいのですが・・・
Plugin doesn't support this project's cordova-ios version. cordova-ios: 3.9.2, failed version requirement: >=4.0.0-dev
Skipping 'cordova-plugin-whitelist' for ios
エラーの内容通りで cordova-whitelist 1.1.0 はまだ正式リリースされていない cordova ios 4.0.0以上に対応らしいです。
whitelistのバージョンを1.0.0に落とせばいいらしいのですが・・・
2015年10月23日金曜日
2015年10月2日金曜日
ファイルを扱う
Fileプラグイン自体の使い方は簡単なので割愛します。
FileプラグインはHTML5のFile APIに準拠しているそうなのでFile APIの使い方をメモ。
コールバック地獄へ入るのでAngularを使っている場合はng-cordova, そうでない場合は何らかの手段でpromiseを使用するのが必須だと思います。(FileAPIを簡易に扱うためのライブラリをいくつか試しましたがこれというものがありませんでした)
ファイルかディレクトリかの判断はisDirectory,isFileで可能
FileプラグインはHTML5のFile APIに準拠しているそうなのでFile APIの使い方をメモ。
コールバック地獄へ入るのでAngularを使っている場合はng-cordova, そうでない場合は何らかの手段でpromiseを使用するのが必須だと思います。(FileAPIを簡易に扱うためのライブラリをいくつか試しましたがこれというものがありませんでした)
FileEntryオブジェクト
filesystem: FileSystem
fullPath: "/hoge.txt"
isDirectory: false
isFile: true
name: "hoge.txt"
nativeURL: "file:///storage/sdcard0/hoge.txt"
ファイルかディレクトリかの判断はisDirectory,isFileで可能
資料
- html5rock FileSystem API について知る - 重要ページ!
2015年10月1日木曜日
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
MFileChooserを使おうとして上記のエラーが出ました。
エラー原因は読んでそのままですが、修正がとても難しいです。
絶対に間違っている方法だと思いますが重複している片方のプラグインのconfig.xmlで依存をコメントアウトしました。。。。。。。
zip圧縮・解凍を行う
ng-cordovaで使われているのはcordova-plugin-zipですが、こちらのプラグインは解凍のみです。Androidのみとなりますが圧縮・解凍を行うプラグインがありました。(未検証)
jjdltc-cordova-plugin-zip
jjdltc-cordova-plugin-zip
登録:
投稿 (Atom)