CodenameOne-Android推送通知支持,无需专业帐户

时间:2018-09-12 12:31:28

标签: codenameone

因此,我负担不起Codeameone专业版帐户,因此我使用GCM为Android实现了本机推送通知。经过一番挣扎,我才开始运作。

现在不建议使用GCM,我想迁移到FCM。但是,我遇到了一些问题,因为代号“ 1”不允许我将正确的依赖项注入到build.gradle文件中,以便Firebase应用正确初始化。

我在这里描述了这些:

https://stackoverflow.com/questions/52278220/codenameone-firebaseapp-not-initializing

也尝试为专业帐户使用某些功能,以便向我的应用程序添加正确的fcm依赖关系,这意味着让我的主要applicatoin类实现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支持,而无需专业人士帐户,而不必使用codenameone服务器来中继推送?

我宁愿使用fcm endpoing从服务器发送推送通知,并在设备上添加自定义通知处理。

谢谢。

1 个答案:

答案 0 :(得分:1)

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