IOS9 : passage de ios8 à ios9

lundi 5 octobre 2015

IOS9 est denouveau plus permissif en terme de communication avec les webservices, surtout si vous accédez à des webservices hors https, il faut rajouter dans votre fichier.plist le code suivant:

<key>NSAppTransportSecurity</key>
<dict>
  <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

Cette directive est très large car accepte tout

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

Celle-ci est plus ciblée. Et certainement nécessaire quand on utilise afnetworking car bloque complètement.

A partir du 1er janvier 2017, Apple n’autorisera plus que le paramètre NSAllowsArbitraryLoads de NSAppTransportSecurity soit à true !!
Donc Apple impose de plus en plus une communication sécurisée entre l’application et les webservices.

Pour ma part, j’ai parfois des webservices en mode test qui sont pas en https et en mode production qui le sont.

Du coup voici un script à ajouter dans Build Phase qui permet automatiquement lors de la création du build de changer le paramètre dans Info.plist.

#Disables ATS in debug builds.
INFOPLIST="${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
case "${CONFIGURATION}" in
"Release"|"Adhoc")
/usr/libexec/PlistBuddy -c "Set :NSAppTransportSecurity:NSAllowsArbitraryLoads NO" "${INFOPLIST}"
;;
"Debug")
/usr/libexec/PlistBuddy -c "Set :NSAppTransportSecurity:NSAllowsArbitraryLoads YES" "${INFOPLIST}"
;;
esac

Ce code est bien pratique, car il permet de ne plus de se soucier d’activer ou non ce paramètre suivant qu’on est en test (debug) ou en prod (release)

Tags: ATS , iOS 9 , NSAllowsArbitraryLoads , NSAppTransportSecurity