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

Posted

技术标签:

【中文标题】Worklight 6.2 - 推送通知 - 是不是可以更改 userSubscription.userId?【英文标题】:Worklight 6.2 - Push Notification - Is it possible to change userSubscription.userId?Worklight 6.2 - 推送通知 - 是否可以更改 userSubscription.userId? 【发布时间】:2015-04-13 10:17:51 【问题描述】:

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

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

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

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


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

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

然后,我触发 registerEventSourceCallback。

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

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

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

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

任何提示表示赞赏。


更新...

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

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

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

【问题讨论】:

你提到广播和单播,然后你提到事件源回调。这些之间没有关系...除了广播之外,您是否还尝试实现基于事件源的通知?广播不需要身份验证... 如果可能,我希望拥有所有 3 个(广播、单播、事件源)。 请编辑您的问题并仅保留与问题实际相关的信息。 抱歉,编辑问题被打断了。 1. 广播按原样在登录前/登录后工作。没关系。 2. 单播仅在我注册 eventsourcecallback 后工作(我有不同的处理程序)前/后登录。而userId是随机生成的长id。 3. 在 eventSourceCallback 注册和订阅 action 后,Eventsource 推送工作。我希望首先让 2 工作......所以问题是......如何在登录后更新订阅用户 ID?我不想创建新订阅,因为这意味着我会收到两次相同的广播消息。 对更新 userId 进行了一些调查...除非设备取消注册并使用新的 userId 再次注册,否则 userId 不会更新。 Push Hybrid 示例中基于表单的登录 (developer.ibm.com/mobilefirstplatform/documentation/…) 让我们指定 userId。 【参考方案1】:

所以...找出问题所在。

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

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

【讨论】:

以上是关于Worklight 6.2 - 推送通知 - 是不是可以更改 userSubscription.userId?的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.2:成功发送标签推送通知,但在 android 设备上未收到

Xtify with Worklight 6.2 - 示例应用程序未收到任何推送通知

多用户的 Worklight 推送通知

关于 Worklight 中的推送通知?

Worklight 6.1 中的默认推送通知声音

发送推送通知时出现 Worklight 错误