在iOS上无法获取deviceId

时间:2019-11-18 14:58:39

标签: codenameone

我开发了一个使用推送通知的应用程序。在Android上,我从pushRegistered(String deviceId)方法接收deviceId,而推送通知的效果很好。在iOS上,它不起作用。 我的iOS证书包含includePush = true,在构建提示中包含includePush = true。当我运行应用程序时,pushRegistered(String deviceId),pushRegistrationError(String error,int errorCode)方法无济于事。下面是测试代码。我应该怎么做/检查以接收deviceId?

@Override
public void registeredForPush(String deviceId) {
    this.deviceId = "registered id: " + deviceId; //TODO delete
    new DLG02GeneralInfo("PUSH REGISTRATION", "deviceId: " + deviceId, "OK", null).show();
}

@Override
public void pushRegistrationError(String error, int errorCode) {
    new DLG02GeneralInfo("PUSH REGISTRATION ERROR", "error: " + error + " errorCode: " + errorCode , "OK", null).show();
}

2 个答案:

答案 0 :(得分:1)

我发现了问题所在。为了使iOS应用程序能够注册用于推送通知的设备,需要在主类的start()方法中添加以下代码行:

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

Android通知无需该行代码即可工作。

答案 1 :(得分:0)

如果调用registeredForPush,一切都应该很好。但是您不应该使用deviceId。使用Push.getPushKey(),一旦调用registeredForPush,它应返回有效结果。