java - 推送通知在 Android 中不起作用,代号一

标签 java android push-notification google-play-services codenameone

我未能在 Android Codename One 中实现推送通知。

现在注册推送似乎完美无缺,因为 PushCallback 接口(interface)的 public void registeredForPush(String deviceId) 方法调用成功。

Display.getInstance().callSerially(() ->  Display.getInstance().registerPush());

但是,服务器似乎不工作。

new Push(PUSH_TOKEN, "Hello World", deviceId)
            .gcmAuth(GCM_SERVER_API_KEY)
            .send();

上面的deviceId是Android手机本身的,即app作为Push notification server和client。 我认为这段代码应该将通知推送到手机本身。

当然,我按照指南here .

我还在手机设置中打开了此应用程序的通知,我的代号为 one account plan 是 pro,但我不知道为什么通知会到达我的 Android 手机。

请帮我解决这个问题。

(NetBeans IDE 8.2(内部版本 201705191307)

代号一版本:3.7.1)

最佳答案

我找到原因了。 首先,我必须使用 Push.getPushKey() 方法来获取手机的设备 ID。 但我管理电话设备 ID 如下:

public void registeredForPush(String deviceId) {
        store(deviceId); //this should be store(Push.getPushKey()); instead.
}

但这是绝对错误的。 正如Shai在评论中所说,推送通知的设备id应该是start 'cn1-gcm',但这里的deviceId不是这样。 我只是很困惑为什么 registeredForPush() 方法将 devieId 作为其参数,这让开发人员感到困惑。

无论如何,当我在我的代码中使用 Push.getPushKey() 时,它现在工作得很好。 我现在很开心,感谢 Shai 和代号一的所有人。

关于java - 推送通知在 Android 中不起作用,代号一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44861550/

相关文章:

javascript - Azure IoT 推送通知

iphone - 如何检查 iOS 分发配置文件是否启用了推送通知?

java - 将透明圆圈添加到背景图像

java - javac 是否优化目标文件(*.class)?

android - 覆盖引用的样式属性

android - 启动默认音乐播放器,默认播放音乐

android - PhoneGap 构建推送通知 (Android)

java - @Select 在没有参数而不是选择所有实体时引发错误(Datastax Java 驱动程序映射器)

Java JAR : Writing to a file

c# - 如何绑定(bind)使用转换器格式化的文本?