1

我正在使用 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”吗?

还有其他解决方案吗?

4

1 回答 1

3

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

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

  1. 确保对 WL.Client.Push.registerEventSourceCallback 的调用在每个应用会话中仅调用一次,无论用户是否已注销。

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

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

于 2013-10-18T15:36:22.687 回答