As you may be aware, Apple has announced some changes that will affect your iOS apps. Starting on January 1, 2017, all apps and app updates submitted to the App Store must be compliant with App Transport Security (ATS). This means that ATS will be enabled as a default setting, which will prevent your iOS apps from making non-secure connections.
Download the latest Smaato SDK iOS v.8.1.0 which includes the necessary support to ensure that monetization continues to work as intended once ATS compliance is required for your iOS apps.
How to ensure ATS compliance
As long as your project is built with either iOS 9 or iOS 10, your app will be ATS-compliant. However, if you choose to add ATS exceptions—let’s say you wish to load non-secure content from a variety of sources, for example—then Apple will require you to provide a “reasonable justification” at the time of your app submission. Please see the App Store Review for ATS section of Apple’s documentation for more details.
Using Smaato’s SDK for ATS compliance
There are two ways to achieve ATS compliance if you are using the Smaato SDK:
Option 1: We recommend that you upgrade to the Smaato SDK iOS v.8.1.0, and set up the following keys in your application’s info.plist:
- NSAllowsArbitraryLoadsInWebContent: YES
- NSAllowsArbitraryLoads: YES
Let’s take a closer look at how these keys impact your app, depending on which version of iOS it’s running on:
- iOS 10 - Setting NSAllowsArbitraryLoadsInWebContent to YES allows you to enable selective loading of non-secure content in web views. When enabled, this key also overrides the functionality of NSAllowsArbitraryLoads.
- iOS 9 - Selective disabling of non-secure content is not supported in iOS 9, hence setting NSAllowsArbitraryLoads to YES will completely disable ATS on iOS 9.
- iOS 8 and below - All of your secure and non-secure content will load as usual without the above settings.
It’s important to note that if you wish to load non-secure content for Interstitial Videos and Rewarded Videos, then you will have to set NSAllowsArbitraryLoads to YES only. It’s not possible to selectively disable the ATS setting for loading non-secure video content.
Option 2: If you do not upgrade to the Smaato SDK iOS v.8.1.0, then you must set NSAllowsArbitraryLoads to YES. Setting the above key will disable ATS for all network connections in your application.
If you’re mediating multiple network SDKs within your application, you should be aware of the following:
- Each SDK, including Smaato’s SDK, requires NSAllowsArbitraryLoads to be set to YES.
- If the network’s SDK requires NSAllowsArbitraryLoads to be set to NO, this will have a negative effect on the fill-rate because not all partners will be able to deliver secure content. Please make sure to follow the Smaato-specific SDK settings.
In order for Smaato’s services to work seamlessly, we advise you to follow the above instructions to ensure that your iOS apps are ATS-compliant beginning January 1st, 2017.