Worklight:没有用户 ID 的推送通知

Posted

技术标签:

【中文标题】Worklight:没有用户 ID 的推送通知【英文标题】:Worklight: Push notification without User ID 【发布时间】:2013-12-12 11:58:58 【问题描述】:

请建议,是否可以在没有用户 ID 的情况下发送推送通知?假设我们想向所有下载了我们应用程序的用户发送推送消息。或者由于安全原因,用户 ID 不能存储在数据库中(或在应用程序中使用)。

【问题讨论】:

如果您只想向您应用的所有用户发送通知,您可以display a notification on app startup。只需确保在您的应用中将 connectOnStartup 设置为 true 【参考方案1】:

您需要一种方法来识别用户。它将归结为您认为是“用户ID”的内容。有一种方法可以在不使用永久用户 ID 的情况下区分用户。您可以使用持久 cookie 领域。如果您将其添加到您的 authenticationConfig.xml 文件中:

       <realm name="PersistentCookie" loginModule="WeakDummy">
            <className>com.worklight.core.auth.ext.PersistentCookieAuthenticator</className>
        </realm>

然后,当用户连接到 Worklight 服务器时,将为用户创建一个基于持久 cookie 的唯一 ID:

"PersistentCookie":"userId":"6410a0f9-98fb-4940-a127-da940c5d7e16","attributes":,"isUserAuthenticated":1,"displayName":"6410a0f9-98fb-4940-a127-da940c5d7e16"

用户或开发者无需进一步交互。只需将类添加到 authenticationConfig.xml 即可生成用户 ID。

您可以使用此 cookie 为用户订阅推送通知。如果出于安全原因,您希望不再通过此 persistentCookieID 识别此用户,那么您只需清除应用程序上的 cookie,就会为该用户生成一个新 ID。如果生成了新的 persistentCookieID,他们将需要重新订阅推送通知。

【讨论】:

感谢您的建议。这看起来不错,但必须在应用程序每次重新启动时重新订阅。 嗯,有一些方法可以减少重新订阅的数量。您可以将此持久性 cookie ID 保存在本地存储中并继续使用它,并且仅在必要时将其清除。您可以重新生成并存储一个新的,并且不绑定到单个用户 ID。 请记住,从持久性 cookie 身份验证器生成的用户 ID 是持久性的,因此您只需在清除 cookie 时重新订阅,而不是在每次应用重启时重新订阅。【参考方案2】:

您需要订阅列表以在 Worklight 中发送推送通知,并且适配器(服务器)端 API 以获取所有订阅

WL.Server.getUserNotificationSubscription(eventSource, userId);

所以如果没有 userId,就无法发送推送通知。

我不确定安全问题,因为 userID 只是用于登录应用程序的用户名。如果您的应用程序和事件源都具有 securityTests,那么 Worklight 会自动处理与 userId 一起存储的订阅。

【讨论】:

我可以理解并同意你的观点,但这是我客户的要求。 App里根本没有登录页面。【参考方案3】:

从 Worklight 6.2 开始,您可以使用“广播通知”功能向所有用户(订阅或未订阅)发送通知。

更多信息,请参考http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/devref/c_push_notif_broadcast.html

要发送广播通知,您可以使用 WL.Server.sendMessage( applicationId, notificationOptions )。更多信息可以在 http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/devref/c_send_push_notifications.html

【讨论】:

以上是关于Worklight:没有用户 ID 的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight:推送通知设备 ID

IBM Worklight - 仅向订阅用户推送通知

关于 Worklight 中的推送通知?

使用 Worklight 5.0.1.299 推送通知

Worklight 6.1 - Android 推送通知到达时没有声音

getUser 通知订阅 WORK LIGHT 推送通知中的用户 ID