高级设置 - Vungle Android SDK v.1.0 - v.4.1

目录

  1. 全局广告配置
  2. 单个广告配置
  3. 配置选项
  4. 事件监听器接口
  5. 混淆器

请注意:本文章描述了 Vungle Android SDK 的高级设置。如果您刚开始使用 Android SDK,您需要阅读我们的“Android 入门指南”。

全局广告配置

调用 init 后,您可以有选择地访问全局 AdConfig 对象。通过此对象,您可以设置将自动应用到您播放的每个广告的选项。

import com.vungle.publisher.VunglePub;
import com.vungle.publisher.AdConfig;
import com.vungle.publisher.Orientation;

public class FirstActivity extends android.app.Activity {

  ...

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      ...

      vunglePub.init(this, app_id);

      // 获得对全局 AdConfig 对象的引用
      final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig();

      // 随意设置任何您要的配置选项。
      // 有关可用选项的完整描述,请参阅
      //“配置选项”部分。
      globalAdConfig.setSoundEnabled(true);
      globalAdConfig.setOrientation(Orientation.autoRotate);

  }
}

单个广告配置

您可以通过向 playAd 提供一个 AdConfig 对象来有选择地自定义所播放的每个广告。如果您在全局广告配置(见上)中设置任何选项,这些选项将被提供的选项覆盖。 通过以下方法传递覆盖项 AdConfig

import com.vungle.publisher.VunglePub;
import com.vungle.publisher.AdConfig;

public class GameActivity extends android.app.Activity {
  ...

  private void onLevelComplete() {
      // 创建新 AdConfig 对象
      final AdConfig overrideConfig = new AdConfig();

      // 随意设置任何您要的配置选项。
      // 有关可用选项的完整描述,请参阅
      //“配置选项”部分。
      overrideConfig.setIncentivized(true);
      overrideConfig.setSoundEnabled(false);

      // overrideConfig 对象将仅影响此广告播放。
      vunglePub.playAd(overrideConfig);
  }
}

配置选项

AdConfig 对象

覆盖项 AdConfig 有一组可为单个广告播放设置的选项。 可用选项如下:

方法 默认 描述
setOrientation Orientation.matchVideo Orientation.autoRotate 指示广告将随设备方向自动旋转。Orientation.matchVideo 指示广告将以最佳视频方向播放(通常为横向)。
setSoundEnabled true 设置广告的开始声音状态。如果为 true,音频遵循设备的音量和声音设定。如果为 false,视频开始时为静音,但用户可自行调节。
setBackButtonImmediatelyEnabled false 如果为 true,用户可以使用返回按钮立即退出广告。如果为 false,在屏幕上的关闭按钮显示之前用户不可以使用返回按钮退出广告。
setImmersiveMode false 在 KitKat+ 设备上启用或禁用沉浸模式
setIncentivized false 设置奖励模式 - 如果您的奖励广告使用的是服务器到服务器回调,则必须将此项设置为 true。如果为 true,用户试图跳过广告时,会弹出一个确认对话窗口。如果为 false,则不会显示确认窗口。请在此处了解更多有关奖励广告的设置说明。
setIncentivizedUserId none 将您的唯一用户 ID 设置为传递至您的应用程序中,以验证该用户观看了奖励广告应获得奖励。如果广告没有奖励,则为 N/A。
setIncentivizedCancelDialogTitle “关闭视频?” 设置跳过奖励广告时确认对话窗口的标题。如果广告没有奖励,则为 N/A。
setIncentivizedCancelDialogBodyText “提前关闭此视频您将无法获得奖励。是否确定继续?” 设置跳过奖励广告时确认对话窗口的正文。如果广告没有奖励,则为 N/A。
setIncentivizedCancelDialogCloseButtonText “关闭视频” 设置跳过奖励广告时确认对话窗口的“取消按钮”。如果广告没有奖励,则为 N/A。
setIncentivizedCancelDialogKeepWatchingButtonText “继续观看” 设置跳过奖励广告时确认对话窗口的“继续观看按钮”。如果广告没有奖励,则为 N/A。
setTransitionAnimationEnabled false 启用或禁用标准片段过渡动画

显示关闭按钮

若要控制用户是否有关闭广告的选项,请使用 Vungle Dashboard 应用程序高级设置中的强制观看选项。

事件监听器接口

Publisher SDK 增加了一些事件,以便您通过实现 com.vungle.publisher.EventListener 类和注册/删除这些类来以编程方式处理,使用:

VunglePub.setEventListeners(eventListener1, eventListener2, ...)

记住在不需要再使用事件侦听器时将其删除,以防止内存泄露。

处理事件侦听器的可用方法如下:

方法 说明
addEventListeners() 清除注册的事件侦听器,然后添加输入事件侦听器。
clearEventListeners() 除事件侦听器
removeEventListeners() 删除输入事件侦听器。

UI 线程注释

回调在后台线程中执行,因此任何由事件回调导致的 UI 交互/更新均需要在执行前传递到主 UI 线程。在 UI 线程运行代码的两个常见方法:

import com.vungle.publisher.EventListener;
...

public class FirstActivity extends android.app.Activity {
  ...

  private final EventListener vungleListener = new EventListener()

    @Override
    public void onAdStart() {
        // 在播放广告前调用
    }

    @Override
    public void onAdEnd(boolean wasSuccessfulView, boolean wasCallToActionClicked) {
        // 当用户离开广告,控制转回至您的应用程序时调用
        // 如果 wasSuccessfulView 为 true,表示用户观看了广告,应获得奖励
        //(如果是奖励广告)。
// 如果 wasCallToActionClicked 为 true,表示用户点击了广告中的
           // 行动号召按钮。
    }

    @Override
    public void onAdPlayableChanged(boolean isAdPlayable) {
        // 当可播放状态发生变化时调用。如果 isAdPlayable 为 true,您现在可以
        // 播放广告。
        // 如果为 false,您还不能播放广告。
    }

    @Override
    public void onAdUnavailable(String reason) {
        // 当调用 VunglePub.playAd() 时调用,但没有可以播放的广告
    }

  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
      ...

      vunglePub.init(this, app_id);
      vunglePub.setEventListeners(vungleListener);

  };

@Override public void onDestroy() { ... vunglePub.clearEventListeners(); };
}

混淆器

如果您使用混淆器,请确保混淆器配置文件中有以下各行:

-dontwarn com.vungle.**
-dontnote com.vungle.**
-keep class com.vungle.** { *; }
-keep class javax.inject.*
# ignore eventbus warnings
-dontwarn de.greenrobot.event.util.**
# ignore rx warnings
-dontwarn rx.internal.util.unsafe.**
# keep some important rx stuff - https://github.com/ReactiveX/RxJava/issues/3097
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-keep class rx.schedulers.Schedulers { public static <methods>; }
-keep class rx.schedulers.ImmediateScheduler { public <methods>; }
-keep class rx.schedulers.TestScheduler { public <methods>; }
-keep class rx.schedulers.Schedulers { public static ** test(); }
还有其它问题?提交请求

评论