用于多个 Worklight 应用程序的推送适配器

Posted

技术标签:

【中文标题】用于多个 Worklight 应用程序的推送适配器【英文标题】:Push adapter for more than one Worklight Application 【发布时间】:2014-05-05 14:39:26 【问题描述】:

是否可以为同一个 Worklight 项目中的多个应用程序创建一个 Workight Push 适配器?

如果可行的话,我应该如何配置我的项目,因为我认为推送通知是由 android 环境中的应用程序名称识别的。因此,推送句柄仅适用于第一个应用程序,但不适用于其他应用程序。

有什么想法吗?

【问题讨论】:

【参考方案1】:

推送通知不是每个应用程序名称。你为什么这么认为?你在文档的某个地方看到了吗?

查看这些主题:

Push notifications Sending push notifications to the device

您可以做的是编写非常通用的代码并确保您的订阅对于应用程序是唯一的,这样它们就不会重叠并向两个应用程序发送通知,或者使用多个事件源 - 每个应用程序一个?

【讨论】:

关于推送通知的应用程序名称未在文档中提及,但这是我得到的行为:我配置了推送通知并且运行良好,然后我更改了文件字符串中的应用程序名称.xml,标签“app_name”。之后,当应用程序打开并收到通知时,推送句柄被撤销。但是如果应用程序关闭并且我收到通知,当我从通知栏中单击它时,什么也没有发生(单击将打开应用程序)。 那只是因为你在规避应用程序的自然流程;我建议用实际的 2 个应用程序验证这一点,而不是那样。 实际上,我创建了 2 个应用程序和 2 个 Push 适配器(每个都有不同的事件源)。当我从第一个适配器调用提交通知过程时,第一个应用程序接收到推送,但不适用于具有第二个推送适配器的第二个应用程序。 什么不起作用?发生什么了?日志显示什么?应用程序和适配器之间有什么不同?提供数据 日志显示:“没有订阅该设备”尽管该设备存在于 Worklight 控制台(设备选项卡)中【参考方案2】:

您在适配器中声明的实体称为 EventSource。任意数量的应用程序都可以订阅此事件源。现在,限制是您只能在您订阅推送的应用程序中接收推送通知。例如。如果您订阅了 app1,您将只能通过 app1 接收通知。如果您需要在 app2 中接收推送通知,则必须单独订阅。但是,没有什么可以阻止您在两个应用程序中使用相同的 EventSource(适配器)。

【讨论】:

如果我使用相同的事件源,推送适配器将如何区分来自 app1 或 app2 的请求来处理正确的请求? 适配器框架总是知道来自哪个应用请求。这是由 Worklight 在后台控制的,您不必担心。【参考方案3】:

我通过创建 2 个推送适配器解决了这个问题,在每个推送适配器中我都创建了一个事件源。

之后,我在同一个 Worklight 项目中创建了 2 个应用程序,每个应用程序订阅不同的事件源,但它们都在 应用程序描述符中具有相同的 pushSender 配置。 xml 文件(相同的密钥和相同的 senderId)

请注意,当在同一个 Push Adapter 中创建 2 个事件源时,适配器的部署总是失败,因此我为每个事件源创建了一个单独的适配器。

【讨论】:

以上是关于用于多个 Worklight 应用程序的推送适配器的主要内容,如果未能解决你的问题,请参考以下文章

使用适配器身份验证的 Worklight 推送通知不起作用

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

使用 Worklight 5.0.1.299 推送通知

IBM Worklight:从后端调用推送通知适配器

worklight中的推送通知,如何检索userId?

推送的 Worklight api 控制台请求