SDK Integration

1. Xcode Project Configuration

1.1 AppLovin SDK Key

  • Use the Xcode project navigator and select Info.plist.
  • Click on the add button (+) next to any key in the property list editor and create a new property key.
  • Enter the key name – AppLovinSdkKey.
  • Choose a string value type.
  • Enter xcGD2fy-GdmiZQapx_kUSy5SMKyLoXBk8RyB5u9MVv34KetGdbl4XrXvAUFy0Qg9scKyVTI0NM4i_yzdXih4XE in the value field.
				
					AppLovinSdkKey
xcGD2fy-GdmiZQapx_kUSy5SMKyLoXBk8RyB5u9MVv34KetGdbl4XrXvAUFy0Qg9scKyVTI0NM4i_yzdXih4XE
				
			

2.2 iOS9 App Transport Security (ATS) Settings

Apple has added controls for ATS in iOS9. It’s important to make these changes to your info.plist to ensure uninterrupted ad delivery across all Mediation Networks.

  • Add a dictionary and name it NSAppTransportSecurity.
  • Add a Boolean named NSAllowsArbitraryLoads in this dictionary and set it to YES.

You may edit the info.plist file by using the Open As Source Code option and adding the following code:

				
					NSAppTransportSecurity 
    NSAllowsArbitraryLoads 
				
			

2.3 iOS14 AppTrackingTransparency(ATT) Settings

User tracking instructions

iOS 14 requires publishers to obtain permission for tracking user devices across applications. Follow these steps to complete the process.

  • Use the Xcode project navigator and select Info.plist.
  • Click the add button (+) next to any key in the property list editor and create a new property key.
  • Enter the key name – NSUserTrackingUsageDescription.
  • Choose a string value type.
  • Enter the app tracking transparency message in the value field.
  • Personalized ads are delivered using this identifier:
				
					NSUserTrackingUsageDescription
This identifier will be used to deliver personalized ads to you.
				
			

For more information about NSUserTrackingUsageDescriptionthis developer documentation from apple

For multi-language localization, check this developer documentation from Apple.

Advertising network ID

Games for users running iOS 14 or later need to include the network ID of each advertising platform in the attribute list file (Info.plist):

  • Use the Xcode project navigator and select Info.plist.
  • Click the add button (+) next to any key in the property list editor and create a new property key.
  • Enter the key name – SKAdNetworkItems.
  • For value type, choose Array.
  • Use the key and each advertising platform network ID string for adding the dictionary to the array.

For more information about editing the property list, check Xcode’s documentation.

The following shows the array of dictionaries you need to access the SDK.

				
					
    SKAdNetworkIdentifier
    275upjj5gd.skadnetwork


    SKAdNetworkIdentifier
    294l99pt4k.skadnetwork


    SKAdNetworkIdentifier
    2fnua5tdw4.skadnetwork


    SKAdNetworkIdentifier
    2u9pt9hc89.skadnetwork


    SKAdNetworkIdentifier
    3rd42ekr43.skadnetwork


    SKAdNetworkIdentifier
    4468km3ulz.skadnetwork


    SKAdNetworkIdentifier
    44jx6755aq.skadnetwork


    SKAdNetworkIdentifier
    44n7hlldy6.skadnetwork


    SKAdNetworkIdentifier
    4fzdc2evr5.skadnetwork


    SKAdNetworkIdentifier
    4pfyvq9l8r.skadnetwork


    SKAdNetworkIdentifier
    523jb4fst2.skadnetwork


    SKAdNetworkIdentifier
    578prtvx9j.skadnetwork


    SKAdNetworkIdentifier
    5l3tpt7t6e.skadnetwork


    SKAdNetworkIdentifier
    5lm9lj6jb7.skadnetwork


    SKAdNetworkIdentifier
    6964rsfnh4.skadnetwork


    SKAdNetworkIdentifier
    6g9af3uyq4.skadnetwork


    SKAdNetworkIdentifier
    74b6s63p6l.skadnetwork


    SKAdNetworkIdentifier
    7rz58n8ntl.skadnetwork


    SKAdNetworkIdentifier
    7ug5zh24hu.skadnetwork


    SKAdNetworkIdentifier
    84993kbrcf.skadnetwork


    SKAdNetworkIdentifier
    8s468mfl3y.skadnetwork


    SKAdNetworkIdentifier
    9nlqeag3gk.skadnetwork


    SKAdNetworkIdentifier
    9rd848q2bz.skadnetwork


    SKAdNetworkIdentifier
    9t245vhmpl.skadnetwork


    SKAdNetworkIdentifier
    a7xqa6mtl2.skadnetwork


    SKAdNetworkIdentifier
    c6k4g5qg8m.skadnetwork


    SKAdNetworkIdentifier
    cg4yq2srnc.skadnetwork


    SKAdNetworkIdentifier
    cj5566h2ga.skadnetwork


    SKAdNetworkIdentifier
    e5fvkxwrpn.skadnetwork


    SKAdNetworkIdentifier
    ejvt5qm6ak.skadnetwork


    SKAdNetworkIdentifier
    g28c52eehv.skadnetwork


    SKAdNetworkIdentifier
    g2y4y55b64.skadnetwork


    SKAdNetworkIdentifier
    gta9lk7p23.skadnetwork


    SKAdNetworkIdentifier
    hs6bdukanm.skadnetwork


    SKAdNetworkIdentifier
    kbd757ywx3.skadnetwork


    SKAdNetworkIdentifier
    kbmxgpxpgc.skadnetwork


    SKAdNetworkIdentifier
    klf5c3l5u5.skadnetwork


    SKAdNetworkIdentifier
    m8dbw4sv7c.skadnetwork


    SKAdNetworkIdentifier
    mlmmfzh3r3.skadnetwork


    SKAdNetworkIdentifier
    mtkv5xtk9e.skadnetwork


    SKAdNetworkIdentifier
    n6fk4nfna4.skadnetwork


    SKAdNetworkIdentifier
    n9x2a789qt.skadnetwork


    SKAdNetworkIdentifier
    ppxm28t8ap.skadnetwork


    SKAdNetworkIdentifier
    prcb7njmu6.skadnetwork


    SKAdNetworkIdentifier
    pwa73g5rt2.skadnetwork


    SKAdNetworkIdentifier
    pwdxu55a5a.skadnetwork


    SKAdNetworkIdentifier
    qqp299437r.skadnetwork


    SKAdNetworkIdentifier
    r45fhb6rf7.skadnetwork


    SKAdNetworkIdentifier
    rx5hdcabgc.skadnetwork


    SKAdNetworkIdentifier
    t38b2kh725.skadnetwork


    SKAdNetworkIdentifier
    tl55sbb4fm.skadnetwork


    SKAdNetworkIdentifier
    u679fj5vs4.skadnetwork


    SKAdNetworkIdentifier
    uw77j35x4d.skadnetwork


    SKAdNetworkIdentifier
    v72qych5uu.skadnetwork


    SKAdNetworkIdentifier
    wg4vff78zm.skadnetwork


    SKAdNetworkIdentifier
    wzmmz9fp6w.skadnetwork


    SKAdNetworkIdentifier
    yclnxrl5pm.skadnetwork


    SKAdNetworkIdentifier
    ydx93a7ass.skadnetwork


    SKAdNetworkIdentifier
    3qcr597p9d.skadnetwork


    SKAdNetworkIdentifier
    3qy4746246.skadnetwork


    SKAdNetworkIdentifier
    3sh42y64q3.skadnetwork


    SKAdNetworkIdentifier
    424m5254lk.skadnetwork


    SKAdNetworkIdentifier
    4dzt52r2t5.skadnetwork


    SKAdNetworkIdentifier
    5a6flpkh64.skadnetwork


    SKAdNetworkIdentifier
    8c4e2ghe7u.skadnetwork


    SKAdNetworkIdentifier
    av6w8kgt66.skadnetwork


    SKAdNetworkIdentifier
    cstr6suwn9.skadnetwork


    SKAdNetworkIdentifier
    f38h382jlk.skadnetwork


    SKAdNetworkIdentifier
    p78axxw29g.skadnetwork


    SKAdNetworkIdentifier
    s39g8k73mm.skadnetwork


    SKAdNetworkIdentifier
    v4nxqhlyqp.skadnetwork


    SKAdNetworkIdentifier
    zq492l623r.skadnetwork


    SKAdNetworkIdentifier
    24t9a8vw3c.skadnetwork


    SKAdNetworkIdentifier
    32z4fx6l9h.skadnetwork


    SKAdNetworkIdentifier
    54nzkqm89y.skadnetwork


    SKAdNetworkIdentifier
    6xzpu9s2p8.skadnetwork


    SKAdNetworkIdentifier
    79pbpufp6p.skadnetwork


    SKAdNetworkIdentifier
    9b89h5y424.skadnetwork


    SKAdNetworkIdentifier
    c3frkrj4fj.skadnetwork


    SKAdNetworkIdentifier
    dkc879ngq3.skadnetwork


    SKAdNetworkIdentifier
    feyaarzu9v.skadnetwork


    SKAdNetworkIdentifier
    ggvn48r87g.skadnetwork


    SKAdNetworkIdentifier
    glqzh8vgby.skadnetwork


    SKAdNetworkIdentifier
    k674qkevps.skadnetwork


    SKAdNetworkIdentifier
    ludvb6z3bs.skadnetwork


    SKAdNetworkIdentifier
    nzq8sh4pbs.skadnetwork


    SKAdNetworkIdentifier
    rvh3l7un93.skadnetwork


    SKAdNetworkIdentifier
    x44k69ngh6.skadnetwork


    SKAdNetworkIdentifier
    x8jxxk4ff5.skadnetwork


    SKAdNetworkIdentifier
    xy9t38ct57.skadnetwork


    SKAdNetworkIdentifier
    zmvfpc5aq8.skadnetwork


    SKAdNetworkIdentifier
    22mmun2rn5.skadnetwork


    SKAdNetworkIdentifier
    4w7y6s5ca2.skadnetwork


    SKAdNetworkIdentifier
    5tjdwbrq8w.skadnetwork


    SKAdNetworkIdentifier
    6p4ks3rnbw.skadnetwork


    SKAdNetworkIdentifier
    737z793b9f.skadnetwork


    SKAdNetworkIdentifier
    97r2b46745.skadnetwork


    SKAdNetworkIdentifier
    b9bk5wbcq9.skadnetwork


    SKAdNetworkIdentifier
    bxvub5ada5.skadnetwork


    SKAdNetworkIdentifier
    dzg6xy7pwj.skadnetwork


    SKAdNetworkIdentifier
    f73kdq92p3.skadnetwork


    SKAdNetworkIdentifier
    hdw39hrw9y.skadnetwork


    SKAdNetworkIdentifier
    krvm3zuq6h.skadnetwork


    SKAdNetworkIdentifier
    lr83yxwka7.skadnetwork


    SKAdNetworkIdentifier
    mls7yz5dvl.skadnetwork


    SKAdNetworkIdentifier
    mp6xlyr22a.skadnetwork


    SKAdNetworkIdentifier
    s69wq72ugq.skadnetwork


    SKAdNetworkIdentifier
    su67r6k2v3.skadnetwork


    SKAdNetworkIdentifier
    w9q455wk68.skadnetwork


    SKAdNetworkIdentifier
    x8uqf25wch.skadnetwork


    SKAdNetworkIdentifier
    y45688jllp.skadnetwork


    SKAdNetworkIdentifier
    n38lu8286q.skadnetwork


    SKAdNetworkIdentifier
    v9wttpbfk9.skadnetwork


    SKAdNetworkIdentifier
    252b5q8x7y.skadnetwork


    SKAdNetworkIdentifier
    9g2aggbj52.skadnetwork


    SKAdNetworkIdentifier
    r26jy69rpl.skadnetwork


    SKAdNetworkIdentifier
    238da6jt44.skadnetwork


    SKAdNetworkIdentifier
    488r3q3dtq.skadnetwork


    SKAdNetworkIdentifier
    52fl2v3hgk.skadnetwork


    SKAdNetworkIdentifier
    9yg77x724h.skadnetwork


    SKAdNetworkIdentifier
    a2p9lx4jpn.skadnetwork


    SKAdNetworkIdentifier
    ecpz2srf59.skadnetwork


    SKAdNetworkIdentifier
    gvmwg8q7h5.skadnetwork


    SKAdNetworkIdentifier
    n66cz3y3bx.skadnetwork


    SKAdNetworkIdentifier
    pu4na253f3.skadnetwork


    SKAdNetworkIdentifier
    v79kvwwj4g.skadnetwork


    SKAdNetworkIdentifier
    yrqqpx2mcb.skadnetwork


    SKAdNetworkIdentifier
    z4gj7hsk7h.skadnetwork


    SKAdNetworkIdentifier
    x2jnk7ly8j.skadnetwork


    SKAdNetworkIdentifier
    f7s53z58qe.skadnetwork


    SKAdNetworkIdentifier
    7953jerfzd.skadnetwork
				
			

2.4 Add AdMob App ID

  • Add GADApplicationIdentifier with String type to your project’s info.plist file.
  • You may edit the info.plist file and add GADApplicationIdentifier to it by using the Open As Source Code option.
				
					GADApplicationIdentifier 
Your MAS AdMob App ID
				
			

Enable Google Ad Manager

In your app’s Info.plist, add a GADIsAdManagerApp key with the Boolean value of YES.

				
					GADIsAdManagerApp
				
			

3. Comply With Legal Frameworks

Custom privacy dialog

When you use your own privacy dialog :

  • If the user’s age >= 13, then set COPPA to false, otherwise set it to true.
  • If the user’s age >= 16 and consents to having his data collected, then set GDPR to true, otherwise set it to false.
  • If the user consents to having his data collected, then set CCPA to false, otherwise set it to true.

You’ll find the details about how to set the legal frameworks through these links:

MAS privacy dialog

You can enable the built-in privacy compliance dialog to collect the users’ age and consent. Here is a picture of the pop up:

1. Enable (Before the initialization)

Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];    
config.enableUserPrivacyDialog = YES;   
[[Yodo1Mas sharedInstance] setAdBuildConfig:config];
var config = Yodo1MasAdBuildConfig.instance()    
config.enableUserPrivacyDialog = true   
Yodo1Mas.sharedInstance().setAdBuildConfig(config)

 

2. Custom user agreement (optional)

Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];    
config.enableUserPrivacyDialog = YES;   
config.userAgreementUrl = @"Your user agreement url";   
[[Yodo1Mas sharedInstance] setAdBuildConfig:config];
var config = Yodo1MasAdBuildConfig.instance()    
config.enableUserPrivacyDialog = true   
config.userAgreementUrl = "Your user agreement url"     
Yodo1Mas.sharedInstance().setAdBuildConfig(config)

 

3. Custom privacy policy (optional)

Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];    
config.enableUserPrivacyDialog = YES;   
config.privacyPolicyUrl = @"Your privacy policy url";   
[[Yodo1Mas sharedInstance] setAdBuildConfig:config];
var config = Yodo1MasAdBuildConfig.instance()    
config.enableUserPrivacyDialog = true   
config.privacyPolicyUrl = "Your privacy policy url"     
Yodo1Mas.sharedInstance().setAdBuildConfig(config)

 

4. Customize the appearance of the pop up (optional)

The pop up is divided into 3 sections:

  • You can customize the background color of the 3 highlighted areas.
  • You can customize the the top text, button text, and black font text in the content area.
Yodo1MasUserPrivacyConfig *privacyConfig = 
[Yodo1MasUserPrivacyConfig instance]; privacyConfig.titleBackgroundColor = UIColor.blueColor; privacyConfig.titleTextColor = UIColor.whiteColor; privacyConfig.contentBackgroundColor = UIColor.whiteColor; privacyConfig.contentTextColor = UIColor.darkTextColor; privacyConfig.buttonBackgroundColor = UIColor.blueColor; privacyConfig.buttonTextColor = [UIColor whiteColor]; Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance]; config.enableUserPrivacyDialog = YES; config.userPrivacyConfig = privacyConfig; [[Yodo1Mas sharedInstance] setAdBuildConfig:config];
let privacyConfig = Yodo1MasUserPrivacyConfig.instance() privacyConfig.titleBackgroundColor = UIColor.blue privacyConfig.titleTextColor = UIColor.white privacyConfig.contentBackgroundColor = UIColor.white privacyConfig.contentTextColor = UIColor.darkText privacyConfig.buttonBackgroundColor = UIColor.blue privacyConfig.buttonTextColor = UIColor.white let config = Yodo1MasAdBuildConfig.instance() config.enableUserPrivacyDialog = true config.userPrivacyConfig = privacyConfig Yodo1Mas.sharedInstance().setAdBuildConfig(config)

 

5. Get user age and ATT status

NSInteger age = [Yodo1Mas sharedInstance].userAge;
Yodo1MasATTrackingStatus attStatus = [Yodo1Mas sharedInstance].attrackingStatus;
switch(attStatus) {
    case Yodo1MasATTrackingStatusNotDetermined: break;
    case Yodo1MasATTrackingStatusRestricted: break;
    case Yodo1MasATTrackingStatusDenied: break;
    case Yodo1MasATTrackingStatusAuthorized: break;
    case Yodo1MasATTrackingStatusSystemLow: break; // iOS version below 14
}
let age = Yodo1Mas.sharedInstance().userAge
let attStatus = Yodo1Mas.sharedInstance().attrackingStatus
switch(attStatus) {
    case .NotDetermined: break;
    case .Restricted: break;
    case .Denied: break;
    case .Authorized: break;
    case .SystemLow: break; // iOS version below 14
}

 

4. Initialize the SDK

4.1 Import MAS

 

 

#import "Yodo1Mas.h"

 

 

import Yodo1MasCore

 

4.2 Initialize the SDK

[[Yodo1Mas sharedInstance]
initWithAppId:@"Your Appkey" successful:^{ } 
fail:^(NSError * _Nonnull error) { }];
Yodo1Mas.sharedInstance().initWithAppKey("YourAppKey")
{ 
print("[Yodo1 Mas] Successful initialization")
}
fail: 
{ 
(Yodo1MasError) in print("[Yodo1 Mas] Failed initialization")
}

 

  • Note: Please use your Appkey for initialization, not the Admob App ID. Your Appkey can be found under the “details” of your app on MAS Dashboard.
CONTENTS