【发布时间】:2018-09-12 12:31:27
【问题描述】:
所以,我买不起 codeameone 专业帐户,所以我使用 GCM 为 Android 实现了本机推送通知。经过一番努力,我让它工作了。
现在 GCM 已弃用,我想迁移到 FCM。但是,我遇到了一些问题,因为代号 one 不允许我将正确的依赖项注入 build.gradle 文件以使 firebase 应用程序正确初始化。
我在这里描述了这些:
https://stackoverflow.com/questions/52278220/codenameone-firebaseapp-not-initializing
还尝试使用专业帐户的一些功能,以便将正确的 fcm 依赖项添加到我的应用程序中,这意味着让我的主应用程序类实现 PushCallback 接口,但我遇到了其他问题。例如,codenameone 使用专有的覆盖我的 FirebaseMessagingService 实现,当我通过 google fcm 端点发送自定义通知有效负载时会引发错误,该端点以前与我的本机实现一起使用。
我得到的错误是这个:
09-12 14:50:19.581 14378 14397 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at java.io.DataOutputStream.writeUTF(DataOutputStream.java:347)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at java.io.DataOutputStream.writeUTF(DataOutputStream.java:323)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at com.codename1.impl.android.AndroidImplementation.appendNotification(AndroidImplementation.java:470)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at com.codename1.impl.android.CN1FirebaseMessagingService.onMessageReceived(CN1FirebaseMessagingService.java:83)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at com.google.firebase.messaging.FirebaseMessagingService.zzc(Unknown Source)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at com.google.firebase.iid.zzc.run(Unknown Source)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
09-12 14:50:19.581 14378 14397 E AndroidRuntime: at java.lang.Thread.run(Thread.java:761)
显然 CN1FirebaseMessagingService 实现需要通知上的“body”参数。
所以现在我被困住了,要么无法将正确的 fcm 依赖项添加到构建中,要么无法在 FirebaseMessagingService 上实现我的。
我的问题是:有没有一种方法可以在我的应用程序中添加 fcm 支持而无需专业帐户并且不必使用代号服务器来中继推送?
我更喜欢使用 fcm 端点从我的服务器发送推送通知并在设备上添加自定义通知处理。
谢谢。
【问题讨论】:
标签: codenameone