iOS 9用のアプリケーションの準備

9月9日、iOSおよびOS Xの新しいリリースがリリースされ、残り時間が少なくなり、多くの開発者が新しいOSで動作するようにアプリケーションを既に最適化しました。 まだこれを行っていない人のために、iOS 9をサポートするために必要なものを簡単に見てみることをお勧めします。




アプリトランスポートセキュリティ


IOS 9では、ネットワーク上でのデータ転送の安全性を高めるApp Transport Securityテクノロジーが導入されました。 デフォルトで有効になっているため、サーバーがATSの要件を満たしていない場合、接続は失敗します
An SSL error has occurred and a secure connection to the server cannot be made.


ただし、ATSは構成できます。 nscurlコマンドは、構成する必要がある設定を理解するのに役立ちます。 たとえば、Yandexの場合:
 nscurl --ats-diagnostics http://ya.ru
 <...>
デフォルトのATSセキュア接続
 ---
 ATSデフォルト接続
 2015-08-28 11:51:06.868 nscurl [7019:8960694] NSURLSession /
 NSURLConnection HTTPロードが失敗しました(kCFStreamErrorDomainSSL、-9802)
結果:失敗
 ---
 <...>
 ya.ruのPFS例外の構成
 ---
 Perfect Forward Secrecyを無効にする
結果:合格
 ---
 <...>

接続を正常に確立できるのは、 Perfect Forward Secrecyを無効にした場合のみであるため、ya.ruドメインのInfo.plistファイルでNSExceptionRequiresForwardSecrecy=NO指定する必要があります。

ATSの基本構成を検討してください。

ATSを無効にする


NSAllowsArbitraryLoads=YESフラグを指定すると、ATSを完全に無効にできます。 この構成は、デバッグのみに推奨されます。
  <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 


すべてのサブドメインのPFSを無効にします


  <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>ya.ru</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict> 


one 1つを除くすべての接続でATSを無効にする


組み込みブラウザで外部リンクを開くアプリケーションの場合、APIサーバーへの接続を除くすべての接続でATSを無効にする必要があります。
  <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>ya.ru</key> <dict> <key>NSExceptionRequiresForwardSecrecy</key> <false/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <false/> </dict> </dict> </dict> 


ビットコード


IOS 9では、インストールされたアプリケーションのサイズを最適化できるApp Thinningテクノロジーが導入されました。 Xcode 7では、コンパイル時に、アプリケーションがサポートするプラットフォーム用のビットコードが生成されます。 このオプションはデフォルトで有効になっています。 ただし、一部のサードパーティライブラリはまだビットコードでコンパイルされていません。 アプリケーションがそのようなライブラリを使用する場合、ビットコード生成を無効にする必要があります。 プロジェクトENABLE_BITCODE=NOます。


サードパーティアプリケーションへの移行


iOS 9では、 canOpenURL:メソッドの動作が変更されました。 次に、サードパーティアプリケーションに移動するために使用されるスキームのリストを宣言する必要があります。 これは、 Info.plistファイルのLSApplicationQueriesSchemesキーを使用して行われます。 たとえば、アプリケーションがYandex.Navigatorを開く場合、構成は次のようになります。
  <key>LSApplicationQueriesSchemes</key> <array> <string>yandexnavi</string> </array> 


Facebook SDK


アプリケーションがFacebook SDKを使用している場合、 iOS 9のアプリ準備ページでFacebookが推奨するように、ATSとスキームのリストを構成する必要があります。 サーバーとの接続を確立したり、サードパーティのアプリケーションを開いたりする他のサードパーティライブラリにも注意を払う価値があります。

まとめ


ATS、ビットコード、および回路のリストを正しく構成することは、アプリケーションがiOS 9で正しく機能するために行う必要がある主なことです。これは、特に目的と方法を理解している場合は難しくありません。 結局のところ、この知識はiOS 8 SDKからアップグレードするときだけでなく、将来新しいプロジェクトを作成するときにも役立ちます。

頑張って!

Source: https://habr.com/ru/post/J265767/


All Articles