如何解决如何检测用户点击了插页式广告?
有什么方法可以检测用户何时点击了插页式广告?我尝试过,但没有找到任何用于检测插页式广告点击的回调。
任何检测相同情况的解决方法也将非常有帮助。
我想检测广告点击,以防止用户为插页式广告生成虚假点击。
解决方法
您可以结合使用 ActivityLifecycleCallbacks 和 WindowCallback。
-
ActivityLifecycleCallbacks
使您能够观察应用中发生的每个 Activity 生命周期事件。尽在一处。 -
WindowCallback
使您能够拦截许多窗口事件。我们特别感兴趣的系统触发的事件之一是 dispatchTouchEvent。
现在,这是策略:
- 在
GlobalActivityLifecycleListener
类中注册我们的Application
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(GlobalActivityLifecycleListener())
}
}
- 检查当前显示的活动是否为广告活动。如果是,请注册我们的
AdWindowCallbacks
class GlobalActivityLifecycleListener : Application.ActivityLifecycleCallbacks {
//...
override fun onActivityResumed(activity: Activity) {
if (isAdActivity(activity)) {
registerWindowCallbacks(activity)
}
}
private fun registerWindowCallbacks(activity: Activity) {
val currentWindow = activity.window
/*This is needed to forward the events from our callback back to the original
callback after we are done with the processing*/
val originalCallbacks = currentWindow.callback
currentWindow.callback = AdWindowCallbacks(originalCallbacks)
}
}
- 拦截/处理用户触摸事件
class AdWindowCallbacks(private val originalCallback: Window.Callback) : Window.Callback {
//...
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
//TODO process user touch event
return originalCallback.dispatchTouchEvent(event)
}
}
从那里,您可以detect the common gestures并采取相应的行动。
,我明白你的意思。
但从技术上讲,无法通过以下方式跟踪插页式广告的点击次数 用户。
如果您密切关注行为,这些广告会在您的应用内的新页面中打开。您可以通过在呼叫 onPause
中登录 Activity
来确认它们。
当用户点击这些广告时,根据广告的性质,它们会被带到相应的目的地,要么是 Play 商店,要么是在移动浏览器中打开的网址。
正如@Daxesh Vekaria 在评论部分所述,您可以在 AdMob console 中设置频次上限
或尝试@FreeLearning 建议的其他解决方案
编辑 1:
在最坏的情况下,您可以尝试实施 fullScreenContentCallback
。但根据文档,它不提供任何点击回调。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。