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

Push notification Worklight 6.2-推送通知-是否可以更改userSubscription.userId?,push-notification,ibm-mobilefirst,Push Notification,Ibm Mobilefirst,我正在使用Worklight 6.2尝试让推送通知为我们的应用程序工作 我们的应用程序使用基于适配器的身份验证 用户无需登录即可浏览应用程序的前几页 我遇到的问题是,用户登录后,userSubscription中的userId不是Worklight console中设备选项卡下列出的设备的userId 我做了一些调查 应用程序启动后,我可以看到GCM处理注册日志。 此时我可以接收广播通知 然后,我触发registerEventSourceCallback 从适配器服务器日志中,我看到userS

我正在使用Worklight 6.2尝试让推送通知为我们的应用程序工作

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

用户无需登录即可浏览应用程序的前几页

我遇到的问题是,用户登录后,userSubscription中的userId不是Worklight console中设备选项卡下列出的设备的userId


我做了一些调查

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

然后,我触发registerEventSourceCallback

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

我验证了我可以使用上面的用户id(而不是我的客户用户id)发送/接收单播通知

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

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

任何暗示都将不胜感激


更新

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

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


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

。。。解决了问题

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


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

您提到广播和单播,然后提到eventsourcecallback。这两者之间没有关系。。。除了广播之外,您是否还尝试实现基于事件源的通知?广播不需要身份验证…如果可能,我希望所有3个(广播、单播、事件源)。请编辑您的问题,并仅保留与问题实际相关的信息。抱歉,编辑问题时被切断。1.广播在登录前/登录后按原样工作。那很好。2.仅在登录前/登录后注册eventsourcecallback(我有不同的处理程序)后单播才能工作。用户id是随机生成的长id。Eventsource推送在eventSourceCallback注册和订阅操作后工作。我希望能得到2个工作第一。。。所以问题是。。。如何在登录后更新订阅用户ID?我不想创建新订阅,因为这意味着我将收到相同的广播消息两次。对更新用户ID做了一些调查。。。除非设备注销并使用新的用户ID再次注册,否则用户ID不会更新。Push混合示例()中基于表单的登录让我们指定用户ID。