我正在使用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?所以我可以使用单播的默认行为,而不是订阅事件源。
答案 0 :(得分:0)
所以...找出问题。
问题是我在我的适配器中创建了一个事件源而没有指定安全测试。
在WL.Server.createEventSource()中包含securityTest后,订阅表的userId字段会从随机生成的字段正确更新为我登录的userId。