小编leo*_*sse的帖子

FCM:数据消息传递真的不如通知消息传递可靠吗?

问题

我遇到过一些声音,指出与通知消息相比,FCM 数据消息传递的一致性较差。有谁有直接经验或可以向我指出探索该问题的资源吗?或者通知消息只是 Firebase SDK 自动处理的可折叠的高优先级数据消息?

该问题不考虑强制退出应用程序的情况。在这种情况下,两种类型的消息都不会被传递(据我所知)。

背景

我正在为推送服务提供商编写一个新的 Android SDK(类似于 OneSignal)。默认情况下,SDK 应处理推送通知的显示,客户端应用程序也可以选择自行处理传入的推送。

实际的交付当然是由 Firebase 云消息传递(在运行 Play 服务的设备上)完成的。因此,FCM 上有两种类型的消息可供选择:数据消息通知消息。

由于数据消息始终由注册者处理FirebaseMessagingService(假设有效负载中没有notification密钥),因此这应该是 SDK 的发展方向。[参见文档] 到目前为止,我还没有能够产生数据消息未传递的情况(前台或后台)。

android firebase firebase-cloud-messaging

6
推荐指数
1
解决办法
913
查看次数

Android 汽车模拟器 (ARM):融合位置提供程序 API 提供无效位置

Fused Location Provider API 似乎在 Android Automotive Emulator 映像 Sv2(API 32、arm64-v8a、带有 Play Store)上被破坏。有谁知道解决方法?它是 Android Studio 中目前唯一可用于基于 ARM 架构的汽车操作系统映像。

在模拟器的第一次运行期间,它工作得很好。但是,一旦模拟器停止并再次启动(无论是否冷启动),每个位置请求都会引发以下异常:

2023-01-02 15:17:59.431  1827-2496  FusedLocation           com.google.android.gms.persistent    E  
dropping invalid locations [CONTEXT service_id=6 ]
vqy: location must not have realtime in the future
    at vts.i(:com.google.android.gms@220221082@22.02.21 (060408-428111784):34)
    at vrd.j(:com.google.android.gms@220221082@22.02.21 (060408-428111784):0)
    at vrr.i(:com.google.android.gms@220221082@22.02.21 (060408-428111784):1)
    at vrd.j(:com.google.android.gms@220221082@22.02.21 (060408-428111784):0)
    at vrl.a(:com.google.android.gms@220221082@22.02.21 (060408-428111784):3)
    at arsp.d(:com.google.android.gms@220221082@22.02.21 (060408-428111784):10)
    at arvk.i(:com.google.android.gms@220221082@22.02.21 (060408-428111784):18)
    at arve.a(:com.google.android.gms@220221082@22.02.21 (060408-428111784):0)
    at vhn.onLocationChanged(:com.google.android.gms@220221082@22.02.21 (060408-428111784):0)
    at android.location.LocationListener.onLocationChanged(LocationListener.java:63)
    at android.location.LocationManager$LocationListenerTransport$1.operate(LocationManager.java:3180)
    at android.location.LocationManager$LocationListenerTransport$1.operate(LocationManager.java:3177)
    at com.android.internal.listeners.ListenerExecutor.lambda$executeSafely$0(ListenerExecutor.java:127)
    at com.android.internal.listeners.ListenerExecutor$$ExternalSyntheticLambda0.run(Unknown Source:8)
    at android.os.Handler.handleCallback(Handler.java:938) …
Run Code Online (Sandbox Code Playgroud)

android android-emulator fusedlocationproviderapi android-automotive

5
推荐指数
0
解决办法
304
查看次数