Skip to main content

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'
}

6、Production ad ECPM may return 0, and the SDK treats it as a bidding failure​