抢先体验-集成适用于Android或Amazon v。6.7.0-early1的Vungle SDK

开始之前

要求

  • 集成需要创建一个Vungle帐户 ,创建一个新的Android或Amazon应用。请参阅我们的创建应用和配置应用文章,以了解如何在Vungle仪表板中设置展示位置。
  • Android 4.0(-API版本14或更高版本)
  • Amazon OS 5.4或更高版本
  • MREC和横幅广告要求使用API版本16或更高版本
  • Android SDK 6.5.1支持AndroidX

步骤1.在您的项目中包括Vungle SDK

您可以将Vungle SDK作为Gradle依赖项进行集成,也可以使用JARAAR集成进行手动集成。

Gradle
打开项目级别的build.gradle ,并确保JCenter详细信息如下所示:
allprojects {
  repositories {
    jcenter()
  }
}
打开应用程序的应用程序级别build.gradle文件,然后在“ dependencies部分中添加编译依赖项。
buildscript {
  repositories {
    jcenter()
  }
}

dependencies { 
  // Vungle SDK
  implementation 'com.vungle.early-access:publisher-sdk-android:6.7.0-early1'
 
  implementation 'androidx.core:core:1.1.0'
  implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'

  // When appcompat is being used, core and localbroadcastmanager are the dependencies
  // that is getting included
  // implementation 'androidx.appcompat:appcompat:1.1.0'

  // Recommended for SDK to be able to get Android Advertising ID
  implementation 'com.google.android.gms:play-services-basement:17.2.1'
  implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
}
JAR
  1. 下载Vungle SDK版本6.7.0-early1并解压缩。在libs文件夹中,复制所有.jar文件,并将它们添加到您的项目libs文件夹中:
    • vungle-android-sdk-6.7.0.jar
    • gson-2.8.5.jar
    • logging-interceptor-3.12.0.jar
    • okhttp-3.12.0.jar
    • okio-1.15.0.jar
    • androidx-vng-moat-mobile-app-kit-2.6.3.jar
  2. 打开您的应用程序的应用程序级别build.gradle文件,然后在“ dependencies部分中添加其他依赖项。
    dependencies {
      // Vungle SDK
      implementation files('libs/vungle-android-sdk-6.7.0.jar')
    
      // Required Third-party Dependencies
      implementation files('libs/converter-gson-2.5.0.jar')
      implementation files('libs/logging-interceptor-3.12.0.jar')
      implementation files('libs/okhttp-3.12.0.jar')
      implementation files('libs/okio-1.15.0.jar')
      implementation files('libs/androidx-vng-moat-mobile-app-kit-2.6.3.jar')
    
      implementation 'androidx.core:core:1.1.0'
      implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
    
      // When appcompat is being used, core and localbroadcastmanager are the dependencies
      // that is getting included
      // implementation 'androidx.appcompat:appcompat:1.1.0'
    
      // Recommended for SDK to be able to get Android Advertising ID
      implementation 'com.google.android.gms:play-services-basement:17.2.1'
      implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
    }
  3. 通过添加以下行并将应用程序项名称分配给您的应用程序类名称来更新您的AndroidManifest.xml
    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="29"
        tools:overrideLibrary="com.moat.analytics.mobile.vng" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    
    <application
        android:fullBackupContent="@xml/vungle_backup_rule"
        android:hardwareAccelerated="true"
        android:supportsRtl="true" >
        <activity
            android:name="com.vungle.warren.ui.VungleActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.vungle.warren.ui.VungleFlexViewActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    
        <receiver
            android:name="com.vungle.warren.NetworkProviderReceiver"
            android:enabled="false" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
    
        <provider
            android:name="com.vungle.warren.utility.VungleProvider"
            android:authorities="${applicationId}.vungle-provider"
            android:exported="false" />
    </application>
AAR
  1. 下载Vungle SDK版本6.7.0-early1并解压缩。从libs文件夹中,复制SDK .aar和所有.jar依赖项,并将它们添加到您的项目libs文件夹中:
    • vungle-android-sdk-6.7.0.aar
    • gson-2.8.5.jar
    • logging-interceptor-3.12.0.jar
    • okhttp-3.12.0.jar
    • okio-1.15.0.jar
  2. 打开您的应用程序的应用程序级别build.gradle文件,然后在“ dependencies部分中添加其他依赖项。
    dependencies {
      // Vungle SDK
      implementation files('libs/vungle-android-sdk-6.7.0.aar')
    
      // Required Third-party Dependencies
      implementation files('libs/converter-gson-2.5.0.jar')
      implementation files('libs/logging-interceptor-3.12.0.jar')
      implementation files('libs/okhttp-3.12.0.jar')
      implementation files('libs/okio-1.15.0.jar')
    
      implementation 'androidx.core:core:1.1.0'
      implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
    
      // When appcompat is being used, core and localbroadcastmanager are the dependencies
      // that is getting included
      // implementation 'androidx.appcompat:appcompat:1.1.0'
    
      // Recommended for SDK to be able to get Android Advertising ID
      implementation 'com.google.android.gms:play-services-basement:17.2.1'
      implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
    }

步骤 2:导入 Vungle SDK

import com.vungle.warren.Vungle;
import com.vungle.warren.AdConfig;              // Custom ad configurations
import com.vungle.warren.InitCallback;          // Initialization callback
import com.vungle.warren.LoadAdCallback;        // Load ad callback
import com.vungle.warren.PlayAdCallback;        // Play ad callback
import com.vungle.warren.VungleNativeAd;        // MREC ad
import com.vungle.warren.Banners;               // Banner ad
import com.vungle.warren.VungleBanner;          // Banner ad
import com.vungle.warren.Vungle.Consent;        // GDPR consent
import com.vungle.warren.VungleSettings         // Minimum disk space
import com.vungle.warren.error.VungleException  // onError message

步骤3.添加代码

初始化 SDK

init init可选VungleSettings
public static void init(@NonNull final String appId,
                        @NonNull final Context context,
                        @NonNull final InitCallback callback)

初始化方法采用以下参数:

  • Vungle application ID
  • 应用程序上下文
  • InitCallback
    • onSuccess: 通知SDK成功初始化的时间
    • onError: 初始化失败时通知
      • Throws IllegalArgumentException if InitCallback is null.
    • onAutoCacheAdAvailable: 通知自动缓存的展示位置何时有可播放的广告
  • VungleSettings (optional)
6.5.0 & above Legacy
Vungle.init(appId, getApplicationContext(), new InitCallback() {
  @Override
  public void onSuccess() {
    // SDK has successfully initialized
  }

  @Override
  public void onError(VungleException exception) {
    // SDK has failed to initialize
  }

  @Override
  public void onAutoCacheAdAvailable(String placementId) {
    // Ad has become available to play for a cache optimized placement
  }
};
Overridable Methods 描述
onSuccess() 当SDK已成功初始化并准备好加载广告或播放广告(如果有)时调用
onError(VungleException exception) 尝试初始化SDK时发生错误时调用。您将能够检查来自VungleException getLocalizedMessage的错误消息,并使用getExceptionCode进行调试
onAutoCacheAdAvailable(String placementId) 当广告可用于针对缓存优化的展示位置播放时调用。仍然希望发布者明确地针对缓存优化的展示位置发布loadAd ,如为展示位置加载广告中所述

您可以随时通过调用isInitialized方法来检查Vungle SDK是否已初始化:

public static boolean isInitialized()

Implement Event Listeners

您可以使用通用的回调,通过实现LoadAdCallback为广告加载事件和PlayAdCallback对广告播放的事件,或使用内联回调,当你调用loadAdplayAd

LoadAdCallback

6.5.0 & above Legacy
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() { 
  @Override
  public void onAdLoad(String id) { 
    // Ad has been successfully loaded for the placement
  } 

  @Override 
  public void onError(String id, VungleException exception) { 
    // Ad has failed to load for the placement
  }
};
Overridable Methods 描述
onAdLoad(String id) 广告成功加载并在展示位置播放时调用
onError(String id) 尝试播放广告时发生错误时调用。您将能够检查来自VungleException getLocalizedMessage的错误消息,并使用getExceptionCode进行调试

PlayAdCallback

6.6.0 & above Legacy
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
  @Override
  public void onAdStart(String id) { 
    // Ad experience started
  }

  @Override
  public void onAdEnd(String id) {
    // Ad experience ended
  }

  @Override
  public void onAdClick(String id) {
    // User clicked on ad
} @Override public void onAdRewarded(String id) { // User earned reward for watching an ad } @Override public void onAdLeftApplication(String id) { // User has left app during an ad experience } @Override public void onError(String id, VungleException exception) { // Ad failed to play } };
Overridable Methods 描述
onAdStart(String id) 广告成功启动并在设备上显示时调用。
onAdEnd(String id) 在整个广告体验结束后(将控件返回到托管应用之前)调用。
onAdClick(String id) 当用户点击视频广告或下载按钮时调用。
onAdRewarded(String id) 当用户完成了80%的奖励视频并应得到奖励时调用。奖励用户应在此处进行,并且只会在有奖励的展示位置中触发。
onAdLeftApplication(String id) 当用户在广告体验完成之前离开应用程序时调用,例如打开广告的商店页面。
onAdError(String id, VungleException exception) 尝试播放广告时发生错误时调用。您将能够检查来自VungleException getLocalizedMessage的错误消息,并使用getExceptionCode进行调试

为展示位置加载广告

将通知LoadAdCallback有关分配给它的呼叫的加载状态。 SDK仅引用此回调,而不会将其存储在任何地方。调用者有责任确保正确管理回调。

public static void loadAd(@NonNull final String id, @Nullable LoadAdCallback callback)
// Load Ad Implementation
if (Vungle.isInitialized()) {
  Vungle.loadAd("PLACEMENT_ID", new LoadAdCallback() {
    @Override
    public void onAdLoad(String placementReferenceId) { }

    @Override
    public void onError(String placementReferenceId, VungleException exception) { }
  });
}

检查展示位置的广告可用性

使用静态方法canPlayAdmethod可以在调用playAd方法之前检查是否有可用于该展示位置的广告。

public static boolean canPlayAd(@NonNull String id)

播放广告

要播放广告,请使用展示位置参考ID,可选的AdConfig (如果未使用, AdConfig null)和PlayAdCallback事件侦听器调用playAd方法,在广告播放过程中会向其通知成功或错误。

public static void playAd(@NonNull final String id, final AdConfig settings, @Nullable final PlayAdCallback listener)

始终通过调用查询广告可用性canPlayAd调用方法之前playAd方法。因为如果快速连续重复调用playAd ,广告将无法正确呈现,因此您还必须确保在发出其他playAd之前,从初始playAd调用中收到了onAdEndonError回调。

if (Vungle.canPlayAd("PLACEMENT_ID")) { 
  Vungle.playAd("PLACEMENT_ID", null, vunglePlayAdCallback);
}

发生onError重新初始化SDK

在极少数情况下,资源可能会变得有限,从而导致系统取消分配Vungle SDK的一部分或我们SDK所需的某些第三方依赖项。在这种情况下, LoadAdCallbackPlayAdCallback使用代码VungleException.VUNGLE_NOT_INTIALIZED带有VungleException对象的onError回调。这表明Vungle SDK处于不可操作状态,必须重新初始化。

if (e.getExceptionCode() == VungleException.VUNGLE_NOT_INTIALIZED) {
  // Re-initialize Vungle SDK
}

高级设置

集成 MREC Ads

Vungle MREC目前处于BETA阶段。请直接与您的客户经理联系以获取访问权限,以确保成功启动。

从Vungle SDK 6.4.11版本开始,Vungle支持不需要全屏视图的MREC视频广告。呈现MREC广告的容器大小为300 x 250,这是行业标准。可以在屏幕上的任何位置设置MREC视频广告,并且用户可以在播放广告的同时继续使用该应用。

加载MREC广告

加载MREC广告与加载全屏广告相同。但是,该展示位置必须配置为支持MREC供稿。请联系您的Vungle客户经理以启用MREC的展示位置。

显示MREC广告

由于视图大小是固定的,因此用于显示MREC广告的容器必须指定为300dp x 250dp,并且视图可以放置在屏幕上的任何位置。此容器是RelativeLayOut

您可以将此RelativeLayout放置在屏幕上的任何位置。然后,您必须调用AdConfig.setAdSize以将广告尺寸指定为AdConfig.AdSize.VUNGLE_MREC并在调用Vungle.getNativeAd以获取MREC广告对象时传递此对象。

最后,调用addView函数将容器与MREC广告相关联。默认情况下,Vungle MREC播放时会启用声音,但您可以将setMuted选项设置为true以使视频静音。

private RelativeLayout mrecContainer = findViewById(...);

AdConfig adConfig = new AdConfig();
adConfig.setAdSize(AdConfig.AdSize.VUNGLE_MREC);
adConfig.setMuted(true);

VungleNativeAd vungleNativeAd = Vungle.getNativeAd("MREC_ID", adConfig, vunglePlayAdCallback);
View nativeAdView = vungleNativeAd.renderNativeView();
mrecContainer.addView(nativeAdView);

关闭MREC广告

因为您已将MREC广告视图添加到了容器视图,所以还必须将其删除,以防广告视图从屏幕上消失,活动或片段被破坏,或者父视图容器被回收或破坏。如果您尝试播放另一个MREC广告而不关闭前一个广告,则可能会在应用中看到意外行为。因此,调用finishDisplayingAd可以结束广告体验。我们还建议您删除视图onAdEnd事件。

private VungleNativeAd vungleNativeAd;

// Calling finishDisplayingAd when you want to finish displaying MREC Ad
// will trigger onAdEnd and will tell you when you can remove the child
// MREC view container 
vungleNativeAd.finishDisplayingAd();

// And removing empty ad view from container
@Override 
public void onAdEnd(String id, boolean completed) {
    …
    parentView.removeView(nativeAdView);
    vungleNativeAd = null;
    …
}

附加和分离MREC广告的状态

如果用户滚动到视频广告在屏幕上不再可见的位置,则必须暂停视频,并在视频再次显示时继续播放。要控制暂停和恢复状态,请从VungleNativeAd实例调用setAdVisibility ,并在视频可见时将其设置为true ,而在视频不在屏幕上时将其设置为falsesetAdVisibility不应与View可见setAdVisibility混淆:此设置器会通知Vungle SDK MREC广告视图是否可见,SDK会视其而暂停或继续播放视频。

  • 暂停MREC广告
    vungleNativeAd.setAdVisibility(false);
  • 重新播放MREC广告
    vungleNativeAd.setAdVisibility(true);

集成 Banner 广告

Vungle Banner目前处于测试阶段。请直接与您的客户经理联系以获取访问权限,以确保成功启动。

Vungle supports banner video ads starting with Vungle SDK v6.5.1. The container size to render banner ads can be 320x50, 300x50, or 728x90 (for tablets).


横幅广告可以设置在屏幕上的任意位置,并且用户可以在播放广告的同时继续使用该应用。

Banner Size

Dimensions

AdConfig.AdSize.BANNER

320x50

AdConfig.AdSize.BANNER_SHORT

300x50

AdConfig.AdSize.BANNER_LEADERBOARD

728x90 (for tablets)

加载横幅广告

加载横幅广告的方式与其他广告格式的方式不同。您可以使用特定的Banners API来加载,播放和检查广告的可用性。您必须指定要加载的横幅的大小,SDK会按照在仪表板上配置的时间间隔自动刷新它。您还必须配置展示位置以支持横幅广告,因此,请联系您的Vungle客户经理以为该横幅广告启用横幅广告。

  • 通过调用loadBanner方法来加载横幅广告:
    Banners.loadBanner("BANNER_ID", AdConfig.AdSize.BANNER, vungleLoadAdCallback);
  • 通过调用canPlayAd方法检查横幅广告的可用性:
    Banners.canPlayAd(ad.placementReferenceId, AdConfig.AdSize.BANNER);

显示横幅广告

由于视图尺寸是固定的,因此您必须将用于显示横幅广告的容器指定为受支持的尺寸之一:320x50、300x50或728x90(对于平板电脑)。您可以将视图放置在屏幕上的任何位置。此容器是LayOut 。它的大小必须等于或大于您正在使用的横幅大小。您可以将此LayOut放置在屏幕上的任何位置。然后,您必须通过Banners API传递正在使用的Banners的大小。

调用Banners.loadBanner指定要显示的大小时传递此对象,并使用Banners.getBanner获取Banners广告对象。最后,调用addView方法将容器与横幅广告相关联。

private RelativeLayout bannerContainer = findViewById(...);
// Check for banner ad availability and display
if (Banners.canPlayAd("BANNER_ID", AdConfig.AdSize.BANNER)) {
  VungleBanner vungleBanner = Banners.getBanner("BANNER_ID", AdConfig.AdSize.BANNER, vunglePlayAdCallback);
  bannerContainer.addView(vungleBanner);
}

关闭横幅广告

由于横幅广告视图已添加到您的容器视图中,因此,如果广告视图从屏幕上消失,活动或片段被破坏,父视图容器被回收或破坏,则也必须将其删除。如果您尝试播放另一个横幅广告而不关闭前一个广告,则可能会在应用程序中遇到意外行为。

vungleBanner.destroyAd();

高级横幅配置

在大多数情况下,上述集成已足够,并且将管理VungleBanner 。但是,如果VungleBanner视图在列表或RecyclerView ,则托管的VungleBanner将无法正常工作。用户在屏幕外滚动广告并向后滚动时,广告将结束,不再在那里。对于此类情况,我们提供了高级API,用于更紧密地控制VungleBanner 。有关更多信息,请参阅我们的主要横幅广告集成指南

包括Google Play服务

在您的项目中包含Google Play服务是可选的,但建议这样做。它使Vungle能够为您的最终用户提供更具个性化的广告体验。我们建议您包括地下室和广告标识符API,并使用Google Play服务v11.0.1或更高版本。

要包括Google Play服务,请参阅Google的设置指南 。在您的应用中,确保设备具有足够更新的Google Play服务版本。 Vungle SDK可以选择使用Google Play服务中的location和ads API。

  • google.android.gms:play-services-basement:16.0.0 (Recommended)
  • google.android.gms:play-services-ads-identifier:16.0.0 (Required for AAID)

减少方法数量

将Vungle Android SDK v6添加到您的项目中会添加大约700种核心Vungle方法,不包括任何传递依赖项。包括第三方库在内的完整集成预计平均将添加少于4000种方法。考虑以下建议,以减少添加到项目中的方法总数:

  • ProGuard:您可以启用ProGuard来缩小您的项目代码。它将在编译时丢弃所有未使用的类,以使方法的总计数尽可能小。您可以通过设置使之minifyEnabledtruebuild.gradle为相应的生成类型,并通过提供规则,以保持您的项目所需的类。
  • MultiDex:如果您仍然超过65K,则启用MultiDex可能是Google提供的唯一解决方案。您只需一次将项目配置为MultiDex,但这将对构建和应用程序启动时间产生影响。

ProGuard

如果使用的是ProGuard,请将以下规则添加到ProGuard配置文件中:

# Vungle
-keep class com.vungle.warren.** { *; }
-keep class com.vungle.warren.downloader.DownloadRequest
-dontwarn com.vungle.warren.error.VungleError$ErrorCode
-dontwarn com.vungle.warren.downloader.DownloadRequest$Status
-keepclassmembers enum com.vungle.warren.** { *; }

# Moat SDK
-keep class com.moat.** { *; }
-dontwarn com.moat.**
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-keepattributes *Annotation*

# Retrofit
-keepattributes Signature, InnerClasses
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn javax.annotation.**
-dontwarn kotlin.Unit
-dontwarn retrofit2.-KotlinExtensions
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}

# Okio+OkHttp
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
-dontwarn org.conscrypt.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-keepclassmembers class * extends com.vungle.warren.persistence.Memorable {
   public <init>(byte[]);
}

设置最小磁盘空间

Vungle SDK v6.4.11中引入了最小磁盘空间配置,以确定在Vungle SDK初始化和提取广告之前用户设备上可用空间的限制。 setMinimumSpaceForInit的默认值为51 MB, setMinimumSpaceForAd的默认值为50 MB。大小以字节为单位输入。

VungleSettings vungleSettings = new VungleSettings.Builder()
    .setMinimumSpaceForInit(51L * 1024L * 1024L)  // 51 MB
    .setMinimumSpaceForAd(50L * 1024L * 1024L)    // 50 MB
    .build();
  
Vungle.init(appId, getApplicationContext(), initCallback, vungleSettings);

限制使用设备ID

从Vungle Android SDK v6.4.11开始,当Google Advertising ID不可用时,您现在可以限制所使用的Android ID的传输。

// Set true to opt out for Android ID collection by SDK or false (default) to opt in
VungleSettings vungleSettings = new VungleSettings.Builder()
    .setAndroidIdOptOut(true)
    .build();
    
Vungle.init(appId, getApplicationContext(), initCallback, vungleSettings);

广告配置选项

你必须提供一个新的自定义你玩个人广告的选项adConfig对象playAd 。当AdConfig对象为null时,广告将使用默认配置设置播放;如果为非null,则其设置会覆盖AdConfig设置器中的设置。以下是如何使用AdConfig

Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);

上面的示例使用adConfig对象,该对象包含自定义的配置选项。设置AdConfig对象,如下所示:

对象
AdConfig adConfig = new AdConfig();
adConfig.setAdOrientation(AdConfig.AUTO_ROTATE);
adConfig.setMuted(true);
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);

下表列出了所有可用的AdConfig选项:

选项

说明

setBackButtonImmediatelyEnabled

如果在关闭广告按钮出现之前应启用后退按钮,则为“ true”;否则为“假”

setAdOrientation

AdConfig.AUTO_ROTATE 视频广告是否应自动旋转; 否则为 AdConfig.LANDSCAPE 或 AdConfig.PORTRAIT以遵循视频广告方向

setMuted

如果视频的音频设置与您所用应用程序的音频设置匹配,则为“ false”; “ true”,无论是否开始静音

setOrdinal

采用序数的整数值来跟踪在同一会话中播放的广告数量

注意:您可以将同一个AdConfig对象用于多个广告。

自定义奖励广告

奖励广告的弹出消息对话框可以使用setIncentivizedFields方法进行配置。

 

注意: 奖励广告在某些情况下称为激励性广告;这两个字词始终指的是同一种广告。在SDK代码和Reporting API中,我们使用术语“激励”。
public static void setIncentivizedFields(@Nullable String userID, @Nullable String title, @Nullable String body, @Nullable String keepWatching, @Nullable String close)

有效广告位置列表

我们提供了一个辅助方法,该方法返回一个字符串集合,其中包含当前会话的所有有效的展示位置引用ID。

public static Collection getValidPlacements()

GDPR 推荐实施方法说明

在2019年5月25日, the General Data Protection Regulation (GDPR) 在欧盟开始实行。为了符合GDPR要求,开发者有两个选择。

  • 选项1(推荐):发布者在用户级别控制GDPR同意过程,然后将用户的选择传达给Vungle。为此,开发人员可以使用他们自己的机制收集用户的同意,然后使用Vungle API来更新或查询用户的同意状态。有关详细信息,请参见下面的示例代码。
  • 选项 2:允许 Vungle 处理相关需求。Vungle 在向欧洲用户播放广告之前会显示征求同意的对话框,并记住用户的同意或拒绝选择,以用于后续的广告。

updateConsentStatus方法(在选项1中推荐)以用户的同意状态和同意消息版本为参数。

public static void updateConsentStatus(@NonNull Consent status, @NonNull String consentMessageVersion)

同意状态将指定用户对于您显示的消息版本是OPTED_IN还是OPTED_OUTconsentMessageVersion指定发布者控制的同意策略版本;这样一来,您就可以按消息版本集中用户,并在GDPR政策更改时再次征求同意。

// Usage example of GDPR API
// To set the user's consent status to opted in:
Vungle.updateConsentStatus(Vungle.Consent.OPTED_IN, “1.0.0”);

// To set the user's consent status to opted out:
Vungle.updateConsentStatus(Vungle.Consent.OPTED_OUT, “1.0.0”);

// To find out what the user's current consent status is:
// This will return null if the GDPR Consent status has not been set
// Otherwise, it will return Vungle.Consent.OPTED_IN or Vungle.Consent.OPTED_OUT
Vungle.Consent currentGDPRStatus = Vungle.getConsentStatus();
String consentMessageVersion = Vungle.getConsentMessageVersion();

CCPA实施

自2020年7月1日起,将执行《加利福尼亚消费者隐私法》(CCPA),发布者必须更新至Android SDK 6.7.0-early1以遵守CCPA。

updateCCPAStatus方法获取用户的同意状态,以指定用户具有OPTED_IN还是OPTED_OUTgetCCPAStatus()方法返回该用户的当前CCPA状态。

public static void updateCCPAStatus(@NonNull final Consent status)
public static Consent getCCPAStatus()
// Usage example of CCPA API
// To set the user's CCPA status to opted in:
Vungle.updateCCPAStatus(Consent.OPTED_IN);

// To set the user's CCPA status to opted out:
Vungle.updateCCPAStatus(Consent.OPTED_OUT);

// To find out what the user's current consent status is:
Consent currentCCPAStatus = Vungle.getCCPAStatus();

硬件加速

如果您的目标API级别设置为14或更高,则默认情况下为您的应用程序启用硬件加速 。必须启用此选项,SDK才能正确显示动态模板和MREC广告。确保在项目的应用程序级别将此选项设置为“ true”:

<application android:hardwareAccelerated="true" ...>

检索SDK版本号

要通过编程方式检索运行时的 SDK 版本号(这在内部协调时很有用),Vungle 提供了以下字符串:

com.vungle.warren.BuildConfig.VERSION_NAME

调试异常代码

onError回调触发时, InitCallbackPlayAdCallbackLoadAdCallback将具有VungleException代码。您可以使用代码调试或采取措施以编程方式解决问题。

if (exception.getExceptionCode() == VungleException.VUNGLE_NOT_INTIALIZED) {
  // Call routine to initialize SDK
}
异常代码 说明
CONFIGURATION_ERROR 发生配置错误。检查您的应用ID和展示位置参考ID,然后在网络连接可用时重试。
NO_SERVE 广告服务器未找到您当前出价的广告。请稍后再试。此异常是预期的行为。
UNKNOWN_ERROR 出现未知错误。这种异常应该很少见。
AD_EXPIRED 缓存中的广告已过期,无法再播放。请加载另一个广告。
MISSING_REQUIRED_ARGUMENTS_FOR_INIT 请确保提供了标记为NonNull的Vungle.init()所有参数,因为它们对于SDK的运行至关重要。
APPLICATION_CONTEXT_REQUIRED 请提供应用程序Context以便我们的SDK可以在Activity生命周期之外继续支持我们的API。
OPERATION_ONGOING 您所请求的操作已经在进行中。请等到操作完成后再开始其他操作。
VUNGLE_NOT_INTIALIZED Vungle未初始化,或不再初始化。请调用Vungle.init()重新初始化。
AD_UNABLE_TO_PLAY 无法播放广告。
AD_FAILED_TO_DOWNLOAD 广告下载失败。
PLACEMENT_NOT_FOUND 展示位置无效。
SERVER_RETRY_ERROR 远程服务器响应HTTP Retry-After,SDK将重试此请求。

配置自动备份以进行JAR集成

对于API 23或更高版本的应用程序,默认情况下启用“允许备份”设置。备份规则可确保备份所有应用程序数据,以使Vungle SDK和应用程序本身正常运行。如果您尚未禁用“允许备份”设置或未指定自己的备份规则,则必须提供其他XML规则来定义应从自动备份中排除SDK文件系统中的哪些文件。

Vungle排除规则

<full-backup-content>
    <exclude domain="file" path="vungle" />
    <exclude domain="file" path="vungle_cache" />
    <exclude domain="external" path="vungle_cache" />
    <exclude domain="database" path="vungle_db" />
    <exclude domain="sharedpref" path="com.vungle.sdk.xml" />
</full-backup-content>

与开发人员备份规则的Gradle集成

  1. 将Vungle SDK排除规则添加到具有应用程序自己的排除规则的现有.xml文件中。
  2. fullBackupContent配置为在应用程序级别上替换,并将Vungle SDK排除规则添加到现有的.xml中。

JAR与开发人员备份规则的集成

  1. 使用Vungle排除规则创建一个新的XML文件。
  2. 将.xml文件放在res/xml目录下。
  3. 在上面创建的.xml文件的文件名中,在AndroidManifest.xml的应用程序标签中添加fullBackupContent
    <application
        android:fullBackupContent="@xml/vungle_backup_rule">

禁用自动备份

如果您的应用程序不需要备份,则只需在应用程序标签上将其禁用:

<application 
    android:allowBackup="false" >
Powered by Creativity Driven by Performance Sign Up Here

Questions?

Need further assistance, feel free to reach out to us, we’re here to help!

这篇文章有帮助吗?