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からアップグレードするときだけでなく、将来新しいプロジェクトを作成するときにも役立ちます。



頑張って!




All Articles