Android IBM WorkingHT 6.0-注销后无法订阅推送通知

Android IBM WorkingHT 6.0-注销后无法订阅推送通知,android,push-notification,ibm-mobilefirst,Android,Push Notification,Ibm Mobilefirst,我在Android环境下的基于Worklight的应用程序中面临订阅问题 第一次,当应用程序进行订阅时,一切正常,但当取消订阅并注销,然后再次尝试登录并订阅用户时,一切都会出错 正常情况下,如日志所示,支持通知,并且用户被取消订阅。但是我得到了这个错误: 无法订阅,服务器上未更新通知令牌 这是LogCat: 12-31 09:41:17.220:D/CordovaLog(6293):发布支持:真实12-31 09:41:17.220:D/CordovaLog(6293):发布订阅:false 1

我在Android环境下的基于Worklight的应用程序中面临订阅问题

第一次,当应用程序进行订阅时,一切正常,但当取消订阅并注销,然后再次尝试登录并订阅用户时,一切都会出错

正常情况下,如日志所示,支持通知,并且用户被取消订阅。但是我得到了这个错误:

无法订阅,服务器上未更新通知令牌

这是LogCat:

12-31 09:41:17.220:D/CordovaLog(6293):发布支持:真实12-31 09:41:17.220:D/CordovaLog(6293):发布订阅:false 12-31 09:41:17.220:E/CPCapp(6293):无法订阅,通知令牌为 服务器上未更新12-31 09:41:17.295:D/CPCapp(6293):清除 通知订阅。12-31 09:41:17.300:D/CPCapp(6293):发送 新服务器通知令牌id.12-31 09:41:17.300: D/GCMRegistar(6293):重置com.CPCapp 12-31的回退 09:41:17.300:V/GCMRegistar(6293):注册的应用程序包 发送者发送者号码

我看到这个问题可能与同一个问题有关,但不确定它是否是:


我正在使用Worklight 6.0、Android 4.1和AdapterAuthentication,并将最终用户作为参数。

根据评论,我还使用进行了测试

注销和重新登录后,应用程序无法订阅/取消订阅的原因可能与LogCat中出现的此CordovaPlugin消息有关:

01-02 15:20:13.530:W/CordovaPlugin(27846):尝试发送第二个 ID:Push66817967 01-02 15:20:13.530的回调: W/CordovaPlugin(27846):结果是: “APA91bHDrNHkbBwVtdrjqHj-KNGNMLMUE2-OK7DGIHENQW6ORJPAFREGHRKS9QJUOSUIG9R3ZFBQVVCQTGGZH9MI7U8GBXMRKRTYGYSLHNLQEMMJAXK40CURO78XW9STNLRZFEFKA4OZ3PUYQMZ2FNWSKLD0W”

我已打开一个缺陷,将对其进行调查


我提出了一个解决方法,通过执行以下操作,对我有效,但请注意:

  • 在问题解决之前,为了最小化应用程序流测试,此工作只应执行

HTML:

<input type="button" id="logoutButton" value="Logout" onclick="logoutFromApp();" />

您可以使用示例推送通知项目重现相同的行为吗?登录>订阅>发送推送>取消订阅>注销>登录>订阅。第二次订阅尝试是否失败或成功?我对示例推送通知项目进行了处理,并将此代码放入注销函数
WL.Client.logout('PushAppRealm',{onSuccess:WL.Client.reloadApp})
在第二次登录后,
subscribe
按钮仍处于禁用状态,我认为未调用
onReadyToSubscribe
。这就是用户无法订阅的原因。正如您所建议的,我与Wireshark进行了调查,发现
JSESSIONID
没有更新,我还尝试了添加“WL.Client.connect”的代码,但也不起作用。您所说的不应该在生产环境中执行是什么意思?我上面的代码不是一个解决方案(它对我有用;无论如何,请等我很快更新我的答案…@ghostrider3,请参阅上面我编辑的答案。请告诉我:您是IBM的客户还是业务合作伙伴?谢谢@Idan,我是一家企业partner@ghostrider3,你们公司的名称是什么?谁是顾客?它是IBM的客户吗?
function logoutFromApp() {
    WL.Client.logout("PushAppRealm", {
        onSuccess: function() {
            WL.Client.reloadApp(); 
            WL.Client.connect({onSuccess: successfulConnect, onFailure: failedConnect});
        },
        onFailure: function() { 
            alert ("Failed logging out");}
        }
    );
}

function successfulConnect() {
    WL.Logger.debug ("Connect state: success");
}

function failedConnect() {
    WL.Logger.debug ("Connect state: failure");
}