在 Android 中关闭奖励视频广告

Close reward video ad in Android

我正在设计一个应用程序,在给玩家另一种生活之前包含一个奖励视频。对于用户体验和参与度,我想确保此奖励视频在 30 秒后关闭,并将用户带回应用。我们正在为 4 个最大的视频网络(Chartboost、Vungle、App Lovin 和 Ad Colony)使用客户端中介解决方案。

许多广告网络都提供这种关闭功能,例如 MoPub 的 MoPubView.destroy()。但是,并非所有网络都提供程序化方法来关闭其广告。

我遇到的所有广告网络都会扩展 View class 来展示他们的广告。这意味着广告本身必须在应用的 View 堆栈中。

有没有一种方法可以循环 Views 并关闭与广告匹配的广告?看来这应该是可以的,因为MoPub的SDK使用了下面的代码:

public void destroy() {
    unregisterScreenStateBroadcastReceiver();
    removeAllViews();
    ....
}

removeAllViews()是一个ViewGroup方法,由:

组成
public void removeAllViews() {
    removeAllViewsInLayout();
    requestLayout();
    invalidate(true);
}

我很难将这个 ViewGroup 代码与 View 迭代器结合起来,就像在 Enumerate/Iterate all Views in Activity? 中一样。有什么想法吗?

如果广告视图是由您的应用生成的,为什么不保留对生成视图的引用并在 30 秒后关闭该视图?或者,如果他们提供 XML 配置,请给 XML 视图一个 ID 并执行 findViewById(...) 并关闭该视图。