我正在设计一个应用程序,其中包含一个奖励视频,然后给予玩家另一种生命.对于用户体验和参与度,我希望确保此奖励视频在30秒后关闭,并且用户将被带回应用程序.我们正在为4个最大的视频网络(Chartboost,Vungle,App Lovin和Ad Colony)使用客户端中介解决方案.
许多广告网络提供了这种近距离功能,例如MoPub的MoPubView.destroy().但是,并非所有网络都提供关闭广告的程序化方法.
我遇到的所有广告网络都会扩展View类以展示他们的广告.这意味着广告本身必须位于应用的View堆栈中.
有没有办法循环浏览视图并关闭与广告匹配的视图?这似乎应该是可能的,因为MoPub的SDK使用以下代码:
public void destroy() {
unregisterScreenStateBroadcastReceiver();
removeAllViews();
....
}
而removeAllViews()是一个ViewGroup
方法,由以下组成:
public void removeAllViews() {
removeAllViewsInLayout();
requestLayout();
invalidate(true);
}
我很难将这个ViewGroup代码与Enumerate/Iterate all Views in Activity?中的View迭代器结合起来.有什么想法吗?
解决方法:
如果广告视图是由您的应用生成的,为什么不保留对衍生视图的引用并在30秒后关闭该视图?或者,如果它们提供XML配置,请为XML视图提供ID并执行findViewById(…)并关闭该视图.