IBM Worklight - 无法使用现有别名注册到事件源回调。别名已用于事件源

Posted

技术标签:

【中文标题】IBM Worklight - 无法使用现有别名注册到事件源回调。别名已用于事件源【英文标题】:IBM Worklight - Cannot register to event source callback with an existing alias. The alias is already in use for event source 【发布时间】:2013-10-17 17:23:47 【问题描述】:

我正在使用 IBM Worklight 6.0.0 并在 ios 7 设备上进行测试。

我有以下js错误:

Cannot register to event source callback with an existing alias: 'myPush'. The alias is already in use for event source 'PushEventSource'.

在设备上,当我登录时,注销然后再次登录。 (第二次出现错误)

在客户端,我的代码是:

if (WL.Client.Push)
    WL.Client.Push.onReadyToSubscribe = function()
        WL.Logger.debug("onReadyToSubscribe");
        WL.Client.Push.registerEventSourceCallback(
                "myPush", 
                "PushAdapter", 
                "PushEventSource", 
                pushNotificationReceived);
        if (isPushSubscribed() == false) 
            doSubscribe();
        
    ;  

我的代码有问题吗?

是因为我应该只调用一次“WL.Client.Push.registerEventSourceCallback”吗?

还有其他解决方案吗?

【问题讨论】:

【参考方案1】:

如错误消息所示,您不能多次注册别名。该错误并没有那么有害,因为无论错误消息如何,您仍然可以收到推送通知(您可能需要对此进行测试以确定)。

如果您想避免出现错误消息,您有两种选择:

    确保对 WL.Client.Push.registerEventSourceCallback 的调用 每个应用会话仅调用一次,无论是否 用户已登出。

    在用户注销时调用 WL.Client.Push.unsubscribe 清除别名到事件源的绑定。

我建议使用选项 1。推送通知与设备相关联,而不是与用户相关联。除非您打算为不同用户更改事件源别名,否则取消订阅是没有意义的。

【讨论】:

以上是关于IBM Worklight - 无法使用现有别名注册到事件源回调。别名已用于事件源的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - 如何将 Worklight 代码导入 Eclipse?

使用 IBM Worklight 6 (juno eclipse) 安装 jazz 4.0.2 插件会导致 Worklight 中的功能退化

IBM Worklight - 无法在 Worklight Console 和设备中更改应用程序图标

IBM Worklight 6.0 - 无法在 avd 上使用适用于 android 环境的 dojo 工具包运行示例混合 Worklight 应用程序?

IBM Worklight:无法在 Worklight Console 中上载适配器

IBM Worklight 6.0 - 无法访问 Worklight 服务器