xyk blog

最近は iOS 開発の記事が多めです。

iOS9対応メモ

環境: Xcode7 GM

iOS9 対応で行った作業メモ。

App Transport Security(ATS)対応

HTTPS 接続にする必要あり。今回はとりあえずHTTPを許可するようにInfo.plistに以下の手順で追加する。

  • NSAppTransportSecurityを Dictionary で追加。
  • その下でNSAllowsArbitraryLoadsをBooleanで追加し、YESを設定。

カスタムURLスキーム対応

openURLcanOpenURLのようなメソッドでカスタムURLスキームを呼び出す場合、Info.plistに登録しなければ使えないようになった。
admob SDK を使ってるのだが、アプリ起動時に以下のような許可されてないスキームのエラーが出るようになった。

 -canOpenURL: failed for URL: "itms-books://" - error: "This app is not allowed to query for scheme itms-books"
 -canOpenURL: failed for URL: "kindle://home" - error: "This app is not allowed to query for scheme kindle"

Info.plistに以下の手順で追加する。

  • LSApplicationQueriesSchemesを Array で追加。
  • その下で+を押すとitem 0が追加されるので String でitms-booksを入力。
  • さらに+を押してitem 1を追加し String でkindleを入力。

これで再度起動してみると、スキームが許可されてないエラーから、スキーム起動失敗のエラーに変わった。
これはスキームで起動させるアプリがインストールされていないためなので問題なし。

-canOpenURL: failed for URL: "itms-books://" - error: "(null)"
-canOpenURL: failed for URL: "kindle://home" - error: "(null)"

ここまでの作業でInfo.plistは以下のようになった。

f:id:xyk:20150915220436p:plain

Bitcode をオフ

実機でアプリを起動しようとしたら admob SDK で以下のエラーが出た。

ld: '/.../Google-Mobile-Ads-SDK/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADGestureIdUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

とりあえず Bitcode をオフにすることでビルドが通るようになった。
Target -> Build Settings -> Build Options -> Enable Bitcode を NO に変更。

f:id:xyk:20150915220441p:plain