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
1.2 App Transport Security 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
1.3 App Tracking Transparency settings
iOS 14+ requires publishers to obtain permission for tracking the user’s device 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.
1.4 Advertising network ID
Games for users running iOS 14+ 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.
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
c3frkrj4fj.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
22mmun2rn5.skadnetwork
SKAdNetworkIdentifier
3qcr597p9d.skadnetwork
SKAdNetworkIdentifier
3qy4746246.skadnetwork
SKAdNetworkIdentifier
3sh42y64q3.skadnetwork
SKAdNetworkIdentifier
424m5254lk.skadnetwork
SKAdNetworkIdentifier
47vhws6wlr.skadnetwork
SKAdNetworkIdentifier
4dzt52r2t5.skadnetwork
SKAdNetworkIdentifier
5a6flpkh64.skadnetwork
SKAdNetworkIdentifier
8c4e2ghe7u.skadnetwork
SKAdNetworkIdentifier
a2p9lx4jpn.skadnetwork
SKAdNetworkIdentifier
av6w8kgt66.skadnetwork
SKAdNetworkIdentifier
cp8zw746q7.skadnetwork
SKAdNetworkIdentifier
cstr6suwn9.skadnetwork
SKAdNetworkIdentifier
ecpz2srf59.skadnetwork
SKAdNetworkIdentifier
f38h382jlk.skadnetwork
SKAdNetworkIdentifier
ludvb6z3bs.skadnetwork
SKAdNetworkIdentifier
n38lu8286q.skadnetwork
SKAdNetworkIdentifier
p78axxw29g.skadnetwork
SKAdNetworkIdentifier
s39g8k73mm.skadnetwork
SKAdNetworkIdentifier
v4nxqhlyqp.skadnetwork
SKAdNetworkIdentifier
v9wttpbfk9.skadnetwork
SKAdNetworkIdentifier
y5ghdn5j9k.skadnetwork
SKAdNetworkIdentifier
zq492l623r.skadnetwork
SKAdNetworkIdentifier
24t9a8vw3c.skadnetwork
SKAdNetworkIdentifier
32z4fx6l9h.skadnetwork
SKAdNetworkIdentifier
3l6bd9hu43.skadnetwork
SKAdNetworkIdentifier
52fl2v3hgk.skadnetwork
SKAdNetworkIdentifier
54nzkqm89y.skadnetwork
SKAdNetworkIdentifier
5tjdwbrq8w.skadnetwork
SKAdNetworkIdentifier
6xzpu9s2p8.skadnetwork
SKAdNetworkIdentifier
79pbpufp6p.skadnetwork
SKAdNetworkIdentifier
9b89h5y424.skadnetwork
SKAdNetworkIdentifier
9yg77x724h.skadnetwork
SKAdNetworkIdentifier
a8cz6cu7e5.skadnetwork
SKAdNetworkIdentifier
dkc879ngq3.skadnetwork
SKAdNetworkIdentifier
feyaarzu9v.skadnetwork
SKAdNetworkIdentifier
ggvn48r87g.skadnetwork
SKAdNetworkIdentifier
glqzh8vgby.skadnetwork
SKAdNetworkIdentifier
k674qkevps.skadnetwork
SKAdNetworkIdentifier
m5mvw97r93.skadnetwork
SKAdNetworkIdentifier
n66cz3y3bx.skadnetwork
SKAdNetworkIdentifier
nzq8sh4pbs.skadnetwork
SKAdNetworkIdentifier
rvh3l7un93.skadnetwork
SKAdNetworkIdentifier
vcra2ehyfk.skadnetwork
SKAdNetworkIdentifier
x44k69ngh6.skadnetwork
SKAdNetworkIdentifier
x5l83yy675.skadnetwork
SKAdNetworkIdentifier
x8jxxk4ff5.skadnetwork
SKAdNetworkIdentifier
x8uqf25wch.skadnetwork
SKAdNetworkIdentifier
xy9t38ct57.skadnetwork
SKAdNetworkIdentifier
zmvfpc5aq8.skadnetwork
SKAdNetworkIdentifier
252b5q8x7y.skadnetwork
SKAdNetworkIdentifier
9g2aggbj52.skadnetwork
SKAdNetworkIdentifier
dzg6xy7pwj.skadnetwork
SKAdNetworkIdentifier
f73kdq92p3.skadnetwork
SKAdNetworkIdentifier
hdw39hrw9y.skadnetwork
SKAdNetworkIdentifier
krvm3zuq6h.skadnetwork
SKAdNetworkIdentifier
y45688jllp.skadnetwork
SKAdNetworkIdentifier
97r2b46745.skadnetwork
SKAdNetworkIdentifier
b9bk5wbcq9.skadnetwork
SKAdNetworkIdentifier
mls7yz5dvl.skadnetwork
SKAdNetworkIdentifier
w9q455wk68.skadnetwork
SKAdNetworkIdentifier
su67r6k2v3.skadnetwork
SKAdNetworkIdentifier
737z793b9f.skadnetwork
SKAdNetworkIdentifier
238da6jt44.skadnetwork
SKAdNetworkIdentifier
488r3q3dtq.skadnetwork
SKAdNetworkIdentifier
gvmwg8q7h5.skadnetwork
SKAdNetworkIdentifier
lr83yxwka7.skadnetwork
SKAdNetworkIdentifier
pu4na253f3.skadnetwork
SKAdNetworkIdentifier
v79kvwwj4g.skadnetwork
SKAdNetworkIdentifier
yrqqpx2mcb.skadnetwork
SKAdNetworkIdentifier
z4gj7hsk7h.skadnetwork
SKAdNetworkIdentifier
x2jnk7ly8j.skadnetwork
SKAdNetworkIdentifier
4w7y6s5ca2.skadnetwork
SKAdNetworkIdentifier
f7s53z58qe.skadnetwork
SKAdNetworkIdentifier
mp6xlyr22a.skadnetwork
SKAdNetworkIdentifier
7953jerfzd.skadnetwork
SKAdNetworkIdentifier
7fmhfwg9en.skadnetwork
SKAdNetworkIdentifier
qu637u8glc.skadnetwork
1.5 Add Admob 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
1.6 Enable Google Ad Manager
In your app’s Info.plist
, add a GADIsAdManagerApp
key with the Boolean value of YES
.
GADIsAdManagerApp
2. Comply with the legal frameworks
Important
- It’s mandatory to use a privacy dialog if your target audience includes children under 13, otherwise you need to set the legal frameworks manually in order to comply with the app stores policies and also avoid any revenue loss.
- If you use MAS built-in privacy dialog, the legal frameworks will be configured automatically.
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)
var config = Yodo1MasAdBuildConfig.instance()
config.enableUserPrivacyDialog = true
Yodo1Mas.sharedInstance().setAdBuildConfig(config)
Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];
config.enableUserPrivacyDialog = YES;
[[Yodo1Mas sharedInstance] setAdBuildConfig:config];
2. Custom user agreement (optional)
var config = Yodo1MasAdBuildConfig.instance()
config.enableUserPrivacyDialog = true
config.userAgreementUrl = "Your user agreement url"
Yodo1Mas.sharedInstance().setAdBuildConfig(config)
Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];
config.enableUserPrivacyDialog = YES;
config.userAgreementUrl = @"Your user agreement url";
[[Yodo1Mas sharedInstance] setAdBuildConfig:config];
3. Custom privacy policy (optional)
var config = Yodo1MasAdBuildConfig.instance()
config.enableUserPrivacyDialog = true
config.privacyPolicyUrl = "Your privacy policy url"
Yodo1Mas.sharedInstance().setAdBuildConfig(config)
Yodo1MasAdBuildConfig *config = [Yodo1MasAdBuildConfig instance];
config.enableUserPrivacyDialog = YES;
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 and also the texts colors.
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)
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];
5. Get the user’s 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
}
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
}
3. Initialize the SDK
3.1 Import MAS
import Yodo1MasCore
#import "Yodo1Mas.h"
3.2 Initialize the SDK
Yodo1Mas.sharedInstance().initMasWithAppKey("YourAppKey") {
} fail: { error in
}
[[Yodo1Mas sharedInstance] initMasWithAppKey:@"YourAppKey" successful:^{
} fail:^(NSError * _Nonnull error) {
}];
Your Appkey can be found under the “details” of your app on MAS Dashboard.