我未能在 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/