Troubleshooting
Find solutions to common problems that occur when integrating placements.
An error code appears
When a BuzzAd Android SDK method fails, an error code is returned through the onError callback. Use the table below to identify and resolve the cause.
| Error code | Cause | Resolution |
|---|---|---|
SERVER_ERROR | An error occurred on the Buzzvil server. | Send the error code to your Buzzvil representative. |
INVALID_PARAMETERS | The request did not meet the requirements. (For example, an ad was requested before the user logged in.) | Check that the request arguments contain valid values. |
CONNECTION_TIMEOUT | The network request timed out. | Check the network connection. |
EMPTY_RESPONSE | The network response is empty. (For example, an ad request succeeded but returned zero ads.) | Send the error code to your Buzzvil representative. |
WAITING_FOR_RESPONSE | Another preload request was made while Pop Feed was processing an existing request. Ad allocation still proceeds normally. | Check for duplicate preload requests. |
GOOGLE_AGE_POLICY | The user is below the minimum age allowed to receive ads under platform policy. | Set an age of 15 or older when calling setProfile. |
PRIVACY_POLICY_NOT_ALLOWED | The user has not agreed to the privacy policy. | Check that the user agreed to the privacy policy before requesting ads. |
UNKNOWN | An unidentified error occurred. | Check for errors in the SDK integration and app build. |
Compilation error
-
Cause: This error occurs when integrating a BuzzScreen Android SDK version earlier than 3.11 alongside BuzzAd.
-
Solution: Use BuzzScreen Android SDK 3.11.+.
App build errors
Several issues can cause build failures after integrating the BuzzAd Android SDK. Use the solutions below to troubleshoot them.
Incompatible Kotlin version
- Cause: Your app uses Kotlin 1.3 or earlier, which is incompatible. BuzzAd Android SDK uses Kotlin 1.5 from v3.0.
- Solution: Set the Kotlin version to 1.4 or later.
The kotlin-android-extensions Gradle plugin is deprecated
-
Cause: Your Gradle configuration uses the
kotlin-android-extensionsplugin. -
Solution: Follow Google's https://developer.android.com/topic/libraries/view-binding/migration documentation to migrate to Jetpack view binding.
Cannot reference the android.view.DisplayCutout getCutout() method
- Cause: The
android.view.DisplayCutout getCutout()method was added in API 29. - Solution: Set
compileSdkVersionto 31 or later, or add-dontwarn android.view.Displayto your ProGuard rules.
Cannot register a repository in the project-level build.gradle
-
Cause: Configuration that belonged in
build.gradlein older Android Studio versions has moved tosettings.gradlein newer versions. -
Solution: Use either of the following methods.
Method 1. Add
maven { ... }tosettings.gradle.// settings.gradle pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url "https://dl.buzzvil.com/public/maven" } // 버즈빌 저장소 } }
Method 2. Delete lines 10–17 from the settings.gradle file above, then add the dependencies in the project-level build.gralde.
// build.gradle(proejct)
allprojects {
repositories {
maven { url "https://dl.buzzvil.com/public/maven" } // 버즈빌 저장소
}
}
Manifest merger failure
- Cause: You are using a BuzzAd Android SDK version earlier than 3.5.x with
targetSdkVersionset to 31. - Solution: Update to BuzzAd Android SDK v3.5.x.
Ads are not allocated correctly
Ad allocation can fail for several reasons even after the app builds successfully with the BuzzAd Android SDK. Use the solutions below to troubleshoot.
No ads are allocated
- Cause: The user profile required for ad allocation was not registered during SDK initialization.
- Solution: Follow Register a user profile.
No ads are allocated despite a valid user profile
- Cause: Registering user information through
setUserProfiletriggers creation of a session key required for ad allocation. A request made aftersetUserProfilebut before the key is issued may fail. - Solution: Register a receiver to check when the session key has been issued, as follows.
-
Register
BroadcastReceiver. -
Register
SessionReadyBroadcastReceiverthroughBuzzAdBenefit.registerSessionReadyBroadcastReceiver. -
Unregister the receiver once ads are allocated successfully.
// 1. BroadcastReceiver를 등록하세요
private BroadcastReceiver sessionReadyReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 세션이 완료되었습니다
}
};
// 2. SessionReadyBroadcastReceiver 를 등록하세요
private void registerSessionReadyReceiver() {
BuzzAdBenefit.registerSessionReadyBroadcastReceiver(this, sessionReadyReceiver);
}
// 3. 광고가 정상적으로 할당되면 receiver 등록을 해제하세요
private void unregisterSessionReadyReceiver() {
BuzzAdBenefit.unregisterSessionReadyBroadcastReceiver(sessionReadyReceiver);
}
Video ads are not allocated after setup is complete
- Cause: BuzzAd SDK uses Covi SDK for video ads. Various compatibility issues can prevent this module from working, most commonly using an ExoPlayer version other than 2.11.8.
- Solution: Use a compatible ExoPlayer version. If that is not possible, exclude Covi SDK to prevent unexpected errors. See Exclude Covi SDK from dependencies.
The BuzzAd SDK in-app browser does not work correctly
-
Cause: The SDK's in-app browser may be affected by functions that respond globally to other activities' lifecycles.
-
Solution: Register
BuzzAdBrowser.LifecycleObserverinBuzzAdBrowserto run actions according to the in-app browser's own lifecycle. This observer lets the browser run its configured actions at the appropriate points in its independent lifecycle. Observer functions also provide the browser's context, which you can use while its containing activity is alive.
The following example creates a WebView object to handle a case where [WebView.pauseTimers()](https://developer.android.com/reference/android/webkit/WebView#pauseTimers() is called while the app is onPause(), stopping JavaScript in all app WebViews and freezing the SDK browser.
Register BuzzAdBrowser.LifecycleObserver in BuzzAdBrowser to manage the browser lifecycle and resume or pause JavaScript in onResume() and onPause() respectively.
BuzzAdBrowser.getInstance(context).setBrowserLifecycleObserver(new BuzzAdBrowser.LifecycleObserver() {
@Override
public void onResume(@NonNull Context context) {
(new WebView(context)).resumeTimers();
}
@Override
public void onPause(@NonNull Context context) {
(new WebView(context)).pauseTimers();
}
});
Exclude Covi SDK from dependencies
BuzzAd SDK uses Covi SDK for video ads. If you need to exclude it for compatibility or another reason, exclude the buzz-covi module when declaring the buzzad-benefit dependency in build.gradle, as shown below.
implementation ("com.buzzvil:buzzad-benefit:3.29.+") {
exclude (group: "com.buzzvil", module: "buzz-covi")
}