Third-Party Platform Testing Guide
OPPO Overseas
Self-Operated Ad Testing
Device Restrictions
Only OPPO and Realme devices are supported.
Package Name Binding
Ad strategies are bound to package names, so you must test using the corresponding package name.
Common Testing Issues
- 1、Error 30000: strategy validation failed
Cause: The test app has not been configured with an ad strategy. Solution: Contact the OPPO operations team to configure a test ad strategy. Error: "Failed to fetch configuration" or "Country/region not supported" Cause: The SDK obtains region information through a built-in API. If there is no SIM card or the region does not match, the configuration may fail to load. Solution:
- Switch the VPN to a Southeast Asian region.
- Filter logcat by OposInitManager to check the logs. Verify whether "region: " matches the VPN region. If they do not match, it may be caused by the absence of a SIM card or mismatched region/language settings. In this case, manually set the region code to match the VPN region:
RegionTool.setRegion(Context, "country code");
- 3、BiddingEnd bidding failure Cause: OPPO test ads return an ECPM of 0. TP internally treats ECPM ≤ 0 as a bidding failure during the Bidding phase. Solution: When testing this platform, enable OPPO SDK test mode to ensure the internal flow is executed correctly:
// Comment out before official release
OposInitManager.getInstance().setTestMode(true);
Known Issues and Limitations
1、Native self-rendered ads do not return an icon
Native self-rendered ad types currently do not return icon assets. Do not rely on the icon field during integration.
2、Splash ad still triggers a redirect after being closed
In some cases, after the splash ad is closed, the redirect is still triggered. OPPO will refactor and optimize this logic in a future version.
3、Native assembled interstitial and native assembled splash ads are not currently supported
OPPO requires the close button to use OppoAdCloseView, which conflicts with TP’s built-in assembled ad close button. Therefore, native assembled interstitial and native assembled splash ads are not currently supported.
4、Resource conflict with the Moloco platform; only one can be integrated
The overseas OPOS SDK 3.26.0 depends on androidx.media3:media3-ui:1.9.3, while the Moloco SDK 4.12.0 depends on com.google.android.exoplayer:exoplayer-ui:2.18.2. When the legacy ExoPlayer 2 and AndroidX Media3 coexist, layout resource name conflicts may occur, causing crashes during video playback.
5、The POM forcibly declares multiple third-party SDK versions; dependencies must be excluded when importing opos
Taking version 3.26.0 as an example, the main dependency chain is:
external-overseas-ad-global-pub:3.26.0
└─ external-overseas-ad-third-native-global:3.26.0
├─ Google AdMob 24.9.0
├─ Pangle pag-sdk-m 8.1.6.6
├─ Meta Audience Network 6.21.0
├─ AppLovin 13.5.1
└─ Vungle 7.6.3
- The OPPO main package forcibly declares and transitively introduces Google, Pangle, Meta, AppLovin, and Vungle in its POM. Some platforms may be upgraded by Gradle to TP versions, but the OPPO code is still compiled and tested against its declared versions, so compatibility cannot be guaranteed.
- In addition, pag-sdk-m is Pangle’s aggregated SDK, which conflicts with the Pangle platform supported by TP.
- Therefore, when importing the opos SDK, multiple dependencies need to be excluded:
implementation ("com.opos.ad:external-overseas-ad-global-pub:${opos_version}") {
exclude group: 'com.facebook.android', module: 'audience-network-sdk'
exclude group: 'com.applovin', module: 'applovin-sdk'
exclude group: 'com.pangle.global', module: 'pag-sdk-m'
exclude group: 'com.vungle', module: 'vungle-ads'
exclude group: 'com.google.android.gms', module: 'play-services-ads'
exclude group: 'com.opos.ad', module: 'external-overseas-ad-oppo-pangle-mediation-adn'
}