【未解決】Cordova iOS 4.0(未リリース)を試す(その2)

昨日の、iOS 9のUIWebViewがとても残念らしいのでWKWebViewに対応したCordova iOS 4.0(未リリース)を試してみるに引き続き、第2弾です。

Cordova+jQuery Mobile+Backbone.js+自作プラグインいくつかでできたアプリを移植しています。
アプリそのものはお仕事でやっているものなので公開できませんが、作業中に得られたTipsを公開していきます。

wwwディレクトリのお作法変更

現在のCordova CLI(&Cordova iOS 4.0)で作成したプロジェクトでは、wwwディレクトリがplatforms/ios/wwwではなく、Cordovaプロジェクト直下のwwwを指すようになっています。
一方で、Xcodeでのビルド時はplatforms/ios/wwwを使うので、Xcodeでビルドする際には都度、cordova prepareコマンドを実行しなければなりません。(cordova buildコマンドを使う場合は自動的にprepareも行われるので問題ない)

CordovaアプリをiOSでしかビルドしなくて、Xcodeで作業したい場合は、Xcodeが指すwwwディレクトリをplatforms/ios/wwwに変更しておくと良いでしょう。(プロジェクトに既存のwwwを削除して、platforms/ios/wwwを追加)

Cordova ios4 www

Cordovaプロジェクト直下のwwwディレクトリには、cordova.jsやcordova_plugins.jsが存在しませんが、platforms/ios/wwwには存在します。

Headerが被る問題は引き続き要対応

2013年9月のiOS 7公開時から問題になっている、PhoneGap + jQuery Mobile + iOS SDK7で起きるステータスバー問題に対応するの件は、引き続き対応が必要です。

CDVViewController m

対応が必要なのは、CordovaLib.xcodeproj内のPublic/CDVViewController.mのcreateGapViewです。記述内容は以前と同様です。

Application Transport Security(ATS)に対応する

Cordova iOS 4.0の正式リリース版になればATS問題にも対応するようですが、2015年9月20日時点のソースでは、まだその対応が入っていません。
そのため、自分でInfo.plistを編集して、ATSに対応する必要があります。(一応、ここではATS無効にする)

Cordova ios4 info plist

[xml]
NSAppTransportSecurity

NSAllowsArbitraryLoads

[/xml]

CORS問題が起きる

国際化対応のために、i18nextというJavaScriptのフレームワークを使っています。
i18nextは翻訳ファイルをwww/locales/ja/translation.jsonから取得するようになっているのですが、ここでCORS問題が起きてしまいます。

Cordova ios4 cors

この問題については、今回のアプリでも使用しているcordova-plugin-wkwebview-engineプラグインのサイトでも警告されています。

In iOS 9, Apple has fixed the issue present through iOS 8 where you cannot load locale files using file://, and must resort to using a local webserver. However, you are still not able to use XHR from the file:// protocol without CORS enabled on your server.

Cordova WKWebView Engine

Cordova iOS 4.0の開発者のブログでも、

Apple has fixed the bug where we couldn’t load documents from file:// urls, and it is iOS 9 only.

Shazron’s Cordova (aka PhoneGap) Blog

となっていて、少なくともiOS 9ではAppleがfixed the bugしたと書いてあるのですが、いまのところ私のやり方では正常に動作しません。

解決方法を探っているところではありますが、まだ見つからないのが現状。
やはり、Cordova iOS 4.0の正式リリースを待つしかないのか。。。

次回に続く

まだまだ解決には至りませんが、引き続き調査したいと思います。
ただ、CORS問題が解決しないと、www配下のファイルにfile://でアクセスできないということになるので、i18nextに限らず影響が出そう。
参ったな。。。

この記事を書いた人

井上 研一

経済産業省推進資格ITコーディネータ/ITエンジニア/ブロガー。
井上研一事務所代表、株式会社ビビンコ代表取締役、一般社団法人ITC-Pro東京理事。
北九州市出身、横浜市在住。 AIやIoTに強いITコーディネータとして活動中。著書に「初めてのWatson」、「ワトソンで体感する人工知能」など。セミナーや研修講師での登壇も多数。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします