[iOS 10] iOS 10 での ATS 対応について

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ATS 対応が必須になります

2016 年の年末から ATS (App Transport Security) の有効化が必須となります。
ATS とはアプリとウェブサービスとの間でセキュアな接続を行うための機構です。
http プロトコルで通信を行おうとすると通信エラーが発生するようになり、正常に通信を行うためには https プロトコルを利用することが必要となります。
ATS の詳細に関しては、弊社の平屋が書いた こちらの記事 をご覧ください。

Apple のアナウンス

WWDC 2016 では ATS に関して以下のように発表されました。

App Transport Security Enforcement

Enforced at the end of 2016
Reasonable justification required for most exceptions

  • NSAllowsArbitraryLoads
  • NSExceptionAllowsInsecureHTTPLoads
  • NSExceptionMinimumTLSVersion

Example -- Communicating with a specific third-party server

要約すると以下のようになります。

  • 2016 年の終わりに ATS を強制する
  • 例外設定(ATS の無効化)には正当な理由が必要
    • サードパーティのサーバーと通信を行っている など

これまで NSAllowsArbitraryLoadsYES に設定して ATS を無効化していた場合は、Apple の審査を通すためには 2016 年末から有効化する必要があります。
または無効化したままでも正当な理由を Apple に説明すれば審査に通るかもしれませんが、それなりのやり取りが発生し時間がかかることでしょう。(私の予想です)

新たなキー NSAllowsArbitraryLoadsInWebContent

iOS 10 より、ATS に関して NSAllowsArbitraryLoadsInWebContent という新たなキーが追加されました。
これは WebView を利用してウェブコンテンツを表示している場合、その内容に関しては http での通信を許容するというものです。
API 通信を行い、かつ WebView でのコンテンツ表示を行っているようなアプリは、API 通信で https プロトコルを利用しているならばこのキーを YES に設定するだけで ATS 対応を完了することができます。
除外ドメインの設定が不要となるので、かなりのコストを削減することができるでしょう。

残念な点

iOS 10 のみにしか適用されません。
この設定でアプリをビルドしても iOS 9 には適用されません。
従来通り Insecure なアクセスとみなされ、ウェブページを表示することができなくなります。

iOS 9 にもサポートする場合は、やはりこれまで通り除外ドメインを一つ一つ追加していくという作業が必要になります。
その作業のコストが膨大な場合は 2016 年末以降にアプリをリリース/アップデートするタイミングで iOS 9 をサポート OS から外すという選択肢もアリかと思います。

嬉しい点

UIWebView にも適用されます。
WWDC の発表内では WKWebView を使用している場合 と明言しているのですが、動作確認して試したところ、UIWebView に関しても適用されました

Apple の Developer Forum では Apple の中の人によって「WKWebView と UIWebView の両方でこのキーが適用される」との仕様に変更されたと説明されています。

設定方法

1

最後に

iOS 10 から追加された新たなキー NSAllowsArbitraryLoadsInWebContent を利用すれば WebView 内のコンテンツに関しては http 通信が許可されます。
iOS 9 には適用されないというのが残念ですが、今後のアプリ開発でも利用する機会があると思うので覚えておいて損はないと思います。

リンク

ミレニアム・ファルコン製作日記 #34

34 号 表紙

mfd_34_1

パーツ

mfd_34_2

mfd_34_3

mfd_34_4

成果

mfd_34_5

今回の作業は以下の 2 つでした。

  • 推力偏向板を仮組みする
  • 燃料供給圧力安定器を組み立てる

32, 33 号と同様に推力偏向板に油圧アクチュエータを取り付けました。
こちらはすべて船体底面用のパーツとなります。

推力偏向板にセットされている三角形の燃料供給圧力安定器も取り付けました。
後の号で外殻プレート全体をフレームに固定した後に接着するそうです。

BB-8 ポップコーン バケット

東京ディズニーランドで BB-8 のポップコーン バケット が発売されました。

東京ディズニーランド スター・ウォーズ スーベニア付きメニュー BB-8ポップコーン バケット

みなさん R2-D2 のバケットはゲットしましたか?
私はまだ持っていないので、次回ディズニーランドへ行った時に R2 と BB-8 両方を手に入れようと思います!

それではまた次回。

May the Force be with you!