【问题标题】:Can't get deviceId on iOS无法在 iOS 上获取 deviceId
【发布时间】:2019-11-20 22:45:51
【问题描述】:

我开发了一个使用推送通知的应用程序。在 Android 上,我从 pushRegistered(String deviceId) 方法接收 deviceId,并且推送通知效果很好。在 iOS 上它不起作用。 我使用 includePush=true 获得了 iOS 证书,在构建提示中有 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();
}

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    我发现了问题所在。 iOS 应用注册设备推送通知需要在主类的start() 方法中添加这行代码:

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

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

    【讨论】:

      【解决方案2】:

      如果registeredForPush 被调用,一切都应该是好的。但是你不应该使用deviceId。使用Push.getPushKey(),一旦调用registeredForPush,它就会返回一个有效的结果。

      【讨论】:

      • 嗨,Shai,主要问题是没有调用registeredForPush。是否有我缺少的推送通知的构建提示? (注意:我得到了 includePush=true)还是我的 iOS 证书有问题?提前致谢。
      • 您是否通过 GUI 正确包含了 ios.includePush 提示,或者您是否编辑了文件?如果是后者,您是否包含直接编辑文件时所需的前缀?
      • 是的,我使用了 GUI。因此,当我打开 codenameone_settings.properties 文件时,有这行文本:codename1.arg.ios.includePush=true。我还检查了 Apple 证书的有效性。所有证书均有效且处于活动状态,但 PushNotiffication 不起作用。 Apple 配置文件是正确的,我能够从我的计算机构建 Apple 应用程序而没有任何问题。 Android仍然可以正常工作。我已经在 registerForPush 方法中添加了日志消息,但是 iOS 中的这个方法永远不会被调用。
      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多