Docy

FAQs

1) How long does it take for ads to configure?

1-2 days.

2) What can you do when the app review state is pending?

This state will appear when Yodo1 MAS SDK is updated. The new version may require some more app information. If you are planning to update your game version, please submit your app information for reviewing again. If you have no plans to update your app, then just ignore the info.

3) What should you do if you cannot see ads after completing integration?

First, check to make sure MAS has been initialized successfully, which can be seen from your console.
Second, if you did not follow the testing procedure in this guide, please do so here. 

4) Do you need to request a new banner after one is displayed? And what is the refresh interval for a banner ad?

No, you don’t. MAS will request a new banner when one is displayed. And the banner refresh interval is about 30 seconds.

5) Why is the Admob id generated on the MAS dashboard different from that Admob id in your Admob account?

The Admob id on the MAS dashboard is generated by the MAS account. Admob’s SDK is embedded in MAS, and Admob can only be monetized successfully with the Admob id on the MAS dashboard.

6) How to get SHA1?

Some of our ad networks are asking for your App SHA1 to verify your app is valid.

Not sure how to get your SHA1? Here are guides for Unity and Android.

7) Is MAS GDPR and CCPA compliant?

Yes. Please see relevant methods for compliance with the Unity SDK below

For CCPA:

If the user chooses to opt-in to targeted advertising,
Yodo1U3dMas.SetCCPA(true);

If the user chooses to opt-out of targeted advertising,
Yodo1U3dMas.SetCCPA(false);

For GDPR:

If the user chooses to opt-in to targeted advertising and tracking,
Yodo1U3dMas.SetGDPR(true);

If the user chooses to opt-out of targeted advertising and tracking,
Yodo1U3dMas.SetGDPR(false);

8) Is MAS compatible with Minify?

As of now, MAS is not compatible with Minify. Having Minify in your app will result in test ads viewing issues. Please make sure you are not using Minify when integrating MAS.

 

Android-Related

1) What platform architectures does MAS support?

MAS supports various platform architectures. Please configure your game’s architecture in the project under the label “defaultConfig” in the “build.gradle” file as required by the app. Avoid exceptions caused by using unnecessary platform architectures.

Example:

				
					defaultConfig { 
              ndk { 
                   abiFilters "x86", "armeabi" 
                  } 
}
				
			

2) What permissions are required for MAS SDK?

MAS SDK requires the following permissions:

				
					<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
				
			

MAS SDK will dynamically apply for these permissions when the device’s IP is from China.

NoteUsing Gradle dependencies, these permissions do not require any processing.

3) Review Permissions

After integrating MAS, please check whether the permissions in the app’s manifest file are restricted.

For example:

				
					<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" 
                               android:maxSdkVersion="18"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
                               android:maxSdkVersion="18"/>
				
			

These settings block the obtaining of permissions on devices with higher versions of Android. Please add the “tools:node=”replace”” label on the permissions you need:

				
					<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" 
                               tools:node="replace"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
                               tools:node="replace"/>
				
			

IMPORTANT! Failure to include these permissions negatively affects monetization. Several ad networks require these permissions to function correctly.

4) How can you address the issue of Android DEX 64K Methods Limit?

Android has a 64K method constraint. Since the game will include third-party libraries (including the MAS SDK), the opportunity to add all method sizes will exceed the limit. When your app and the libraries it references exceed 65,536 methods, you can click here to see how to enable multidex for apps with over 64K methods.

5) How can you check if MAS is in your APK?

1) If MAS is present, your APK will have the following structure:

apk_structrue.png

2) The MAS initialization log will be in the console:

console.png

6) What is the minimum Android API version supported by MAS?

MAS SDK supports Android API version 19 and above.

7) What is the cause of the error below during testing with our demo?

				
					NO FILL received: 
..ID: "3ffe33014bc836be" 
..SDK KEY: "xcGD2fy-GdmiZQapx_kUSy5SMKyLoXBk8RyB5u9MVv34KetGdbl4XrXvAUFy0Qg9scKyVTI0NM4i_yzdXih4XE" 
..PACKAGE NAME: "com.yodo1.ads.demo.gp" ..Reason: [{"code":1008,"msg":"Ad unit info must include the adunit ID - please double-check that your package name \/ bundle id matches the one defined in the MAX Ad Unit ID being used"},{"code":1009,"msg":"Ad unit info must include the ad format - please double-check that your package name / bundle id matches the one defined in the MAX Ad Unit ID being used"}]
				
			

This issue is caused by an incorrect package name/bundle id. MAS includes many networks and most of them have a bundle-id verification mechanism. You have to use the real package name from your app to get live ads.

IOS-Related

1) What is the primary cause of errors during compilation?

Dependency conflicts. MAS includes several third-party libraries, and you will need to remove duplicates of these libraries elsewhere in your codebase. 

2) How can you address errors caused by the addition of “ObjC” after running “apply2xcode.sh”?

We recommend 2 approaches:

  • Set parameters “–all_load” in options “Other linker flags”.
  • Set parameters “-force_load” for the libraries of MAS.

3) How can you address the following common errors that occur after running “apply2xcode.sh”?

Error 1: 

				
					Traceback (most recent call last): 
  File "./apply2xcode.py", line 156, in <module> 
    project = XcodeProject.Load(projectPath + '/project.pbxproj') 
  File "/Volumes/Projects/DashyCrashy/dc_src/game/Yodo1Ads/Utils/mod_pbxproj.py", line 1485, in Load 
    flog(stdout) 
NameError: global name 'flog' is not defined 
Jareds-MacBook-Pro:Utils Jared$ ./apply2xcode.sh ../../game.xcodeproj 
project path: 
../../game.xcodeproj
				
			

Solution:

This error message indicates “apply2xcode.sh” failed to run properly. Please check for space or illegal characters in your project path. To ensure that the path is correct, you can find your xcodeproject and drag it behind ./apply2xcode.sh instead of inputting it manually.

Error 2: 

				
					Undefined symbols for architecture arm64: 
  "_kMAConfigKeyMuted", referenced from: 
    -[ALChartboostMediationAdapter updateShowConfigurationsForParameters:] in AppLovinMediationChartboostAdapter(ALChartboostMediationAdapter.o) 
    -[ALGoogleMediationAdapter updateMuteStateFromRequestParameters:] in AppLovinMediationGoogleAdapter(ALGoogleMediationAdapter.o) 
    -[ALVungleMediationAdapter showAdForPlacementIdentifier:serverParameters:error:] in AppLovinMediationVungleAdapter(ALVungleMediationAdapter.o) 
  "_Yodo1MakeStringCopy", referenced from: 
    _UnityGetVersionName in libYodo1Ads.a(Yodo1Commons.o) 
    _UnityGetTalkingDataDeviceId in libYodo1Ads.a(Yodo1AnalyticsManager.o) 
    _UnityGetSuperProperty in libYodo1Ads.a(Yodo1AnalyticsManager.o) 
    _UnityGetSuperProperties in libYodo1Ads.a(Yodo1AnalyticsManager.o) 
"_OBJC_CLASS_$_ALMediationAdapterRouter", referenced from: 
    _OBJC_CLASS_$_ALUnityAdsMediationAdapterRouter in AppLovinMediationUnityAdsAdapter(ALUnityAdsMediationAdapter.o) 
    _OBJC_CLASS_$_ALChartboostMediationAdapterRouter in ...
				
			

Solution: 

Please first follow the instructions for Error 1. If this does not work, it means you have not successfully removed all ad SDKs from your build. Please carefully search for residual code from any other ad SDKs that are already in MAS.

Error 3:

				
					Undefined symbols for architecture armv7; 
    "_res_9_ninit", referenced from: 
        +[SGMDataAcquisitionUnit sgm_DNS] in BUAdSDK(SGMDataAcquisitionUnit.o) 
    "_res_9_ndestroy", referenced from: 
        +[SGMDataAcquisitionUnit sgm_DNS] in BUAdSDK(SGMDataAcquisitionUnit.o) 
ld: symbols not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation)
				
			

Solution:

The solution is the same as for errors #1 and #2.

4) How can you address conflicts generated by Facebook login or analysis SDKs?

To address this, simply delete FBSDKCoreKit.framework from the path: “Assets/Plugins/iOS/Yodo1Ads/thirdsdk/Yodo1Facebook/FBSDKCoreKit.framework” and then build again.

5) How can you address conflicts generated by the Firebase SDK?

To address this, simply delete GoogleUtilites from the path: “Assets/Plugins/iOS/Yodo1Ads/thirsdk/Yodo1Admob/GoogleUtilites.framework”
and delete nanopb.framework from the path:
“Assets/Plugins/iOS/Yodo1Ads/thirsdk/Yodo1Admob/nanopb.framework”,
and build again.
If you encounter a duplicate error related to PromisesObjc.framework, delete it from the path: “Assets/Plugins/iOS/Yodo1Ads/thirsdk/Yodo1Admob/PromisesObjc.framework”.

CONTENTS