Worklight 6.2 - 推送通知 - 是否可以更改userSubscription.userId?

时间:2015-04-13 10:17:52

标签: push-notification ibm-mobilefirst

我正在使用Worklight 6.2试图让推送通知适用于我们的应用。

我们的应用使用基于适配器的身份验证。

用户可以在不登录的情况下导航应用程序的前几页。

我遇到的问题是,在用户登录后,userSubscription中的userId不是在Worklight控制台的“设备”选项卡下为设备列出的userId。


我做了一些调查......

应用启动后,我可以看到GCM处理注册日志。 我此时可以收到广播通知。

然后,我触发registerEventSourceCallback。

从适配器服务器日志中,我看到userSubscription中的userId是 “userId”:“1856115d-e9e5-4f9c-8a16-05e58399ee90”。除非我重新安装应用程序,否则每次都是一致的。我想这是持久性cookie id?

我确认我可以使用上面的userId发送/接收单播通知,但不是我的客户用户ID。

我想知道我的应用程序(基于适配器的身份验证)和推送通知订阅方面的演示应用程序(基于应用程序的身份验证)之间有什么区别?

我的登录步骤是否有问题导致订阅使用持久性cookie userId?

任何提示都表示赞赏。


...更新

我可以通过注册eventsourcecallback和subscribe来实现单播(我不知道如何以任何其他方式获取userId)。而userId是长期随机生成的id。使用的适配器方法是来自演示应用程序的submitNotification(userId,notificationText)。

对于正确的单播步骤(我认为),我可以使用带有notification.target = {userIds:[the-long-userId]}的WL.Server.sendMessage()。在worklight控制台中,在登录之前,设备的UserId列为空。登录后,UserId列使用我的虚拟userId(123_456)正确填充。但是,在登录后,尝试使用userId 123_456发送单播会在服务器日志中返回“找不到设备”。

如何在登录后更新订阅userId?所以我可以使用单播的默认行为,而不是订阅事件源。

1 个答案:

答案 0 :(得分:0)

所以...找出问题。

问题是我在我的适配器中创建了一个事件源而没有指定安全测试。

在WL.Server.createEventSource()中包含securityTest后,订阅表的userId字段会从随机生成的字段正确更新为我登录的userId。