【问题标题】:CodenameOne - Android push notifications support, without a pro accountCodenameOne - Android 推送通知支持,无需专业帐户
【发布时间】: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


    【解决方案1】:

    最终我设法通过 android.gradleDep 构建提示添加所有必需的依赖项并手动初始化 FirebaseApp,从而在本地实现 FCM 支持,如下所述:Can I initialize Firebase without using google-services.json?

    【讨论】:

    • 嗨,阿德里安,您能分享您的工作代码吗?我还需要实现推送......或您详细介绍实现过程的博客文章。电子邮件是 lukmanjaji dot com 的 lukman。提前致谢
    • 您好,我没有时间详细介绍实现,但没有什么特别之处。只需使用一些本机代码来实现对任何 Android 应用程序的 Android 通知支持。请参阅 fcm 文档:firebase.google.com/docs/cloud-messaging/android/client。然后使用 android.xapplication cn1 标志注入清单配置。最后,使用 cn1 本机接口初始化 fcm 服务,如已接受答案中的链接中所述。
    猜你喜欢
    • 2017-12-06
    • 2018-06-13
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多