【发布时间】:2021-06-01 11:45:48
【问题描述】:
我有两台 Android 设备,Android 7.0 和 Android 8.1.0,我正在尝试使用 CodenameOne 向它们发送推送通知。 当我发送推送通知(类型 99)时,它会正确显示在 Android 8 设备上。 但是,Android 7.0 设备似乎将所有推送通知收集在托盘中,并且仅短暂显示 - 不到一秒钟或根本不显示。我可以看到只有在设备处于睡眠状态(屏幕为黑色)时才收到通知。但是我解锁手机后,通知就不再显示了。
另外,另一个可能相关的问题:在我的push(String value) 方法中,我实现了带有通知正文消息的 ToastBar,以防显示不最小化。因此,在我在 Android 7 设备中收到推送通知然后打开应用程序后(即使在收到推送时它已被最小化),我可以看到 ToastBar(或者其中很多,如果推送很少。这不应该发生) .
用于接收推送的 Android 日志在两个版本中似乎都很好。它们看起来像这样:
2021-03-08 12:14:52.308 16422-21684/com.company.app I/System.out: Message received {messageType=3, category=reminder, message=Reminder !;{'id':'251'} }
2021-03-08 12:14:52.308 16422-21684/com.company.app I/System.out: Push message received: Reminder !;{'id':'251'}
2021-03-08 12:14:52.308 16422-21684/com.company.app I/System.out: Push type: 3
2021-03-08 12:14:52.30816422-21684/com.company.app I/System.out: Is running: false
但是,我注意到 Android 7.0 手机也有这个:
2021-03-08 11:46:07.686 1548-1548/? V/NotificationService: pkg=com.company.app canInterrupt=false intercept=true
【问题讨论】:
-
push(String)将始终被调用(即使对于后台推送消息)。您需要明确防止显示您不想显示的消息。当您说简短地展示它时,您的意思是从托盘中取出?原生安卓秀?这与其他应用程序的行为不同吗?邮箱? -
通知在托盘中短暂显示,不到一秒钟,然后消失。有时虽然它根本不在那里显示。是的,我相信这是一个原生的 Android 显示托盘。使用
com.codename1.push中的push()实现通知。仅此应用会发生这种情况,所有其他通知都可以正常工作。 -
另外,我刚刚注意到。当应用程序被终止时,7.0 设备会正确接收并显示通知。它仅在应用程序在后台运行时短暂显示。
-
我想你的意思是当应用程序在前台时?当应用程序运行时,我们从托盘中删除推送通知,以使行为与以这种方式运行的 iOS 一致。我们的假设是应用 UI 位于前台,因此您可以在应用中显示 UI 通知。
-
@ShaiAlmog 前台你的意思是当应用程序显示在屏幕上时?不,该应用程序不显示,它只是在后台运行,可以在当前运行的应用程序列表中找到(如此屏幕截图中的 PlayStore 应用程序imgur.com/OnIHoOE)。所以在我的不同设备上,即使应用程序被列为正在运行,我也会收到推送。但不是在这个 Android 7.0 上。
标签: android push-notification codenameone