Firebase 云消息传递降低了 Android 上的消息优先级

问题描述 投票:0回答:0

我开发呼叫应用程序。我们应用程序中的每个来电都以高优先级推送(Firebase 云消息传递)开始。将我们的 targetSdk 升级到 31 (Android 12) 后,我们开始收到太多崩溃消息:

Fatal Exception: java.lang.RuntimeException: Unable to create service com.example.CallsConnectionService: android.app.ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false: service com.example.callingpp/com.example.CallsConnectionService

CallsConnectionService
- 是一项实现
ConnectionService
(来自 TelecomManager API)的服务。我们的应用程序在获取有关新来电的信息后启动此服务。有时(仅当应用程序处于后台时)当我们的应用程序启动此服务时,它会崩溃并显示上面的消息。

我发现,它崩溃主要是因为来电推送通知优先级。它是 NORMAL 而不是 HIGH。 Android 12 禁止在获得正常推送时从后台启动服务。它 只允许在 HIGH pushes 时这样做。当我发现这些信息时,我开始寻找可以降低优先级的因素。我发现,如果应用程序获得高推送并且不立即显示通知,Firebase 会降低应用程序的优先级。我收集了关于降低生产环境中应用程序优先级的分析:约 16% 的 HIGH 推送在生产环境中降低了优先级。

在我们的应用程序中,我们只有四种类型的 HIGH 通知:新来电、新来电、新语音邮件、新未接来电。我们总是显示所有人的通知,来电除外。当我们的应用程序收到来电通知时,它正在做一些内部工作以连接到 PBX 服务器并获取有关此呼叫的信息。可能发生的情况是,我们的服务器没有返回任何关于呼叫的信息,因为它已经在其他设备上得到应答,或者因为它已经被呼叫者取消。对于这种情况,我们的应用程序不会显示任何高优先级推送。因此,它可能会导致未来设备和应用程序的优先级降低。

问题是:如何解决这个问题?在这个来电澄清过程中,我们应该显示哪个通知,以避免 Firebase 在未来降低优先级?

附言我在每次来电推送后添加了简单的通知(带文本的通知,没有任何操作按钮),通知上的文本是“来电准备”,但它没有帮助。我们看到,对于生产中的 HIGH 通知,我们仍然获得了大约 16% 的降低优先级。

android firebase-cloud-messaging voip
© www.soinside.com 2019 - 2024. All rights reserved.