Wiki

Clone wiki

AATKit iOS / AATKit2 / Third-Party Issues

Network-specific Information

  1. Project Setup
  2. AATKit Initialisation
  3. Banner Integration
  4. Fullscreen Integration
  5. APP Open Integration
  6. Native Ads Integration
  7. Native Ads Integration - special ad network characteristics
  8. Promo Screen
  9. Sample
  10. Disable App Transport Security (ATS)
  11. Advanced Features
  12. Targeting
  13. Rewarded Video
  14. Frequency Capping
  15. Header documentation
  16. Important Remarks
  17. AATKit's Size within your app
  18. What is an AdSpace?
  19. Network-specific Information
  20. Reports Delegate
  21. Listen to impression level information
  22. AATKit AdMob custom events adapter (>= 2.77.x)

This page will provide you with information about AATKit integration issues that are caused by ad network SDKs.

App-Transport Security (ATS)

AATKit supports ATS, however: Several ad networks still do not support ATS. If you want to have ATS enabled in your app, you should remove these SDKs:

  • Amazon
  • InMobi
  • Smaato
  • SmartAd Server

NOTE: The removal of ad networks can cause a decrease in revenue. If in doubt, contact support@addapptr.com.

Bitcode

If you want to upload your application with Bitcode, you need to remove these ad networks:

  • UnityAds

If you integrate any of these networks using CocoaPods, Bitcode will be disabled for your project.

NOTE: The removal of ad networks can cause a decrease in revenue. If in doubt, contact support@addapptr.com.

iPhone X Compatibility (since AATKit 2.65.28)

We encountered a problem were some ad networks place an ads close button outside of the safe area of the display. A close button that is located outside the safe-area results in a fullscreen ad that can't be closed anymore.

The picture below shows the close button above the red line, which is outside of the safe area. Through this, we can't assure that the ad is closable.

Bildschirmfoto 2017-11-24 um 10.47.04.png

To handle this, you have the following options:

1. Use AddApptr's Whitelist

We set up a whitelist for ad networks placing the close button in the safe area. So, if the user device is an iPhone X, we ignore ads from other ad networks which don't place the close button in the safe area.

If you want to add ad networks yourself, e.g., to make sure that some ad networks are involved assuredly for fullscreen ads in your app, you can do so by adjusting the info.plist in your app project.

For this to work you have to:

  • Set up a dictionary AATKitConfigurationin the info.plist
  • Set up an empty dictionary iPhoneXEnabledFullscreenNetworks inside "AATKitConfiguration"

2. Modify AddApptr's Whitelist

If you use an ad server that is not whitelisted, but you make sure creatives are compatible with the iPhone X, you can override our whitelist using the aforementioned instructions along with this additional step:

  • Set up up a <String, BOOL> combination with the ad network in lowercase letters and YES or NO for the BOOL. To make sure you type in the right string, you can use this list for help. Please make sure to use the strings in lowercase letters.

Bildschirmfoto 2017-11-24 um 13.04.44.png

If you activate an ad network in the info.plist, all networks from the whitelist are activated PLUS the ones added by yourself.

If you activate an ad network that is on our whitelist, it doesn't change the behavior. The activated network will still be used for fullscreen ads.

You can also deactivate ad networks for fullscreen ads this way if you require it.

If you don't care about the iPhone X (e.g., because you don't support that screen size via your launch screens), you can also ignore this and continue using the AATKit SDK as is.

NOTE: However, we plan to change this behavior to be equivalent to the AddApptr whitelist at some point in the future. To avoid being subject to this change, we recommend going for option 2 with all your ad networks being enabled.

Privacy Notes

Some networks try to access privacy-related information about the user. If you want to maximize user privacy, you can remove these ad networks:

NOTE: The removal of ad networks can cause a decrease in revenue. If in doubt, contact support@addapptr.com.

📅 Accesses the user's calendar. (NSCalendarsUsageDescription)
📷 Accesses the user's photo library. (NSPhotoLibraryUsageDescription)
🎥 Accesses the user's camera. (NSCameraUsageDescription)
🌎 Accesses the user's location for nearby features. (NSLocationWhenInUseUsageDescription and/or NSLocationAlwaysUsageDescription)
🗓 Accesses the user's reminders app. (NSRemindersUsageDescription)
🏃 Accesses the user's motion information. (NSMotionUsageDescription)

NOTE: Calendar access needs to be granted to serve MRAID compliant ads. The MRAID specification can be found here.

Google Mobile Ads SDK:

Since version 7.42.0, Google Mobile Ads SDK requires publishers to either add their AdMob app key to the Info.plist file of their Xcode project or declare them as Ad Manager Apps. Please find your AdMob app key within your AdMob account or contact our support. Please refer to the following links to add the above entries to your project's Info.plist file:

AdMob App ID

Ad Manager entry

Applovin: Native Ads

The delegate methods of Applovin native ads don't provide information about the state of the ad view that is shown when clicking on a native ad, so we weren't able to implement our callbacks for leaving and resuming the app when showing an ad. That leads to not being able to react to these states in comparison to native ads from other ad networks. So if you rely on these callbacks, we recommend you to use other ad networks than Applovin for native ads in your app.

ApplovinMAX

Please download the following script and follow the steps suggested by Applovin.

AppNexus: Set Custom Interstitial Auto Dismiss Delay

For setting the auto dismiss delay for AppNexus interstitials, you have to:

  • Set up a dictionary AATKitConfiguration in the info.plist
  • Set up a number AppNexusInterstitialAutoDismissDelay inside AATKitConfiguration
  • Set AppNexusInterstitialAutoDismissDelay to the desired value

If you don't set the auto dismiss delay, the default value will be used.

SmartAdServer: Interstitials with Auto Closing Time

SmartAdServer's loading/displaying paradigm is different from AATKit's. SmartAdServer assumes that you display the interstitial at the moment you receive it. AATKit can store a received ad until you want to display it. That causes a problem regarding to the auto closing time for interstitials you can configure on the SmartAdServer website.

Example: If you choose an auto closing time of 10 seconds and display the ad after 4 seconds, the interstitial will close after 6 seconds.

We recommend one of this two ways to use SmartAdServer interstitials:

  1. You don't configure any auto closing time (auto closing time of 0)
  2. You make sure in your app that the interstitial with auto closing time is shown right after it is received

NOTE (since AATKit 2.66.0): If you display a SmartAdServer interstitial whose auto closing time has already expired, the interstitial will be displayed without auto closing time.

Various ad networks using deprecated UIWebView

While AddApptr removed UIWebView usage from AATKit and also updated all ad network SDKs, some of these still make use of UIWebView in special viewability measurement related classes. Currently (May 18th, 2020) the following ad networks may trigger related warnings or even cause rejections when trying to submit your app to the AppStore:

  • Inmobi
  • Mopub (manual selection of a core package may be an option)
  • OneByAOL
  • Smaato
  • Vungle (may not cause issues)

Please contact us in case of related issues and consider to remove these networks as described for the project setup.

Pubnative: Set Custom Offset

To set custom offset for Pubnative fullscreen Ads, you need to

  • In the application Info.plist, set AATKitPubnativeOffsetSecsHTMLInterstitial to the desired int value
  • In the application Info.plist, set AATKitPubnativeOffsetSecsVideoLInterstitial to the desired int value

If you don't set the custom offset, the default value (5 seconds) will be used.

Updated