8

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

目前,我正在通过分析工具跟踪通知点击事件,但使用“蹦床”,这是一种广播接收器,它在实际通知 Intent 之前发送事件以打开特定的 Activity。

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

  1. 此逻辑应在所有涉及的活动上复制,因此很难使其可靠以避免错误/错误
  2. AFAIK,不可能在重新创建 Activity 时清理 Intent extras,这意味着,即使您删除了发送事件所需的 Intent Extras,如果重新创建相同的活动(即使用“不要保留活动”开发选项),使用原始的 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)
        }
    }
}

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

4

0 回答 0