Codenameone 代码名为1的推送通知

Codenameone 代码名为1的推送通知,codenameone,Codenameone,我现在正处于我的codename one应用程序的最后阶段,这个最后阶段是实现推送通知 我需要一些关于如何实现推送通知客户端的帮助 我遵循了《开发人员指南》中的章节,我的主类实现了PushCallback 我还实施了以下相关方法: public void start() { if(current != null){ current.show(); return; } Display.getInstance().callSerially((

我现在正处于我的codename one应用程序的最后阶段,这个最后阶段是实现推送通知

我需要一些关于如何实现推送通知客户端的帮助

我遵循了《开发人员指南》中的章节,我的主类实现了PushCallback

我还实施了以下相关方法:

public void start() {
    if(current != null){
        current.show();
        return;
    }

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

    showHomeForm();
}

@Override
public void push(String value) {
    Dialog.show("Received Push", value, "OK", null);  
}

@Override
public void registeredForPush(String deviceId) {
    Dialog.show("Push Registered", "Device ID: " + deviceId + "\nDevice Key: " + Push.getDeviceKey() , "OK", null);
}

@Override
public void pushRegistrationError(String error, int errorCode) {
    Dialog.show("Push Error", "" + error, "OK", null);
}
我的理解是,在调用registerPush方法时应该调用registeredForPush方法。启动应用程序时,不会调用registeredForPush方法,registerPush方法似乎什么也不做


我的理解有什么不正确?

您不应该在这些回调中使用
对话框
,因为对话框调用正在阻塞,并且可能由于这些API的性质而导致失败,例如,当应用程序最小化时,可以调用API

registerPush()
触发注册,并最终调用registered或error方法


我猜你正在模拟器上运行,而推送实际上并没有实现。您可以使用新的推送控制台,该控制台允许您通过调用已注册的回调来模拟它,并将推送消息发送到模拟器。这些只能在设备上工作。

我正在使用模拟器,所以这就是它出错的地方!我今天会检查并确认这一点。谢谢