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 NSUserTrackingUsageDescription
, this 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
withString
type to your project’sinfo.plist
file. - You may edit the
info.plist
file and addGADApplicationIdentifier
to it by using theOpen 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
Important
- It’s mandatory to use a privacy dialog to comply with Play Store and App Store policies and also avoid any revenue loss.
- If you use MAS built-in privacy dialog, the legal frameworks will be configured automatically.
- If you prefer using your own privacy dialog, you should check the users’ age and add an agreement link to get their consent to having their data collected, then set all the legal frameworks manually.
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.