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

Worklight 6.2 - Push Notification - Is it possible to change userSubscription.userId?

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

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

用户无需登录即可浏览应用的前几个页面。

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


我做了一些调查...

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

然后,我触发registerEventSourceCallback。

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

我验证了我可以 send/receive 使用上面的 userId 但不是我的客户用户 ID 的单播通知。

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

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

感谢任何提示。


更新...

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

对于正确的单播步骤(我认为),我可以使用 WL.Server.sendMessage() 和 notification.target = {userIds: [the-long-userId]}。在 Worklight 控制台中,在登录之前,设备的 UserId 列为空。登录后,UserId 列正确填充了我的虚拟用户 Id (123_456)。然而,在 post 登录后,尝试在服务器日志中发送带有 userId 123_456 returns "No devices found" 的单播。

如何更新订阅用户 ID post-登录?所以我可以只使用单播的默认行为而不是订阅事件源。

所以...解决了问题。

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

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