在没有蹦床的情况下跟踪通知点击(Android 12 中禁止)

Car*_*ega 8 android analytics trampolines android-12

Android 12 禁止所谓的通知蹦床: https://developer.android.com/about/versions/12/behavior-changes-12#notification-trampolines

目前,我正在通过分析工具跟踪通知点击事件,但使用“trampoline”,这是一个广播接收器,它在实际通知意图打开特定活动之前发送事件。

在这里和那里阅读时,我发现该方法的替代方案(也可以避免蹦床)包括使用发送分析事件所需的信息填充 Intent extras。但在这里我看到两个问题:

  1. 此逻辑应在所有涉及的活动上复制,因此很难使其可靠以避免错误/错误
  2. AFAIK,在活动重新创建时清理 Intent 额外内容是不可能的,这意味着,即使您删除了发送事件所需的 Intent 额外内容,如果重新创建相同的活动(即使用“不保留活动”开发选项),使用原始 Intent 附加功能,导致单个实际通知点击产生多个事件。

这是我用来消耗额外意图的函数:

fun consumeClickEventIfAny(intent: Intent) {
    intent.extras?.let { extras ->
        if (extras.containsKey(EXTRA_ANALYTICS_FOR_CLICK)) {
            ... trigger analytics event here
            extras.remove(EXTRA_ANALYTICS_FOR_CLICK)
            intent.replaceExtras(extras)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您是否遇到过相同或类似的问题?你是怎么解决的?任何帮助将不胜感激。谢谢你!