请建议,是否可以在没有用户ID的情况下发送推送通知?假设我们希望向已下载应用程序的所有用户发送推送消息。或者由于安全原因,用户ID无法存储在数据库中(或在应用程序中使用)。
答案 0 :(得分:2)
无论如何,您需要一种识别用户的方法。它将归结为您认为是'userID'的内容。有一种方法可以在不使用永久用户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即可生成userID。
您可以使用此Cookie为订阅者订阅推送通知。如果出于安全原因,您希望不再使用此persistentCookieID标识此用户,则只需清除应用程序上的cookie,即可为该用户生成新ID。如果生成新的persistentCookieID,他们将需要重新订阅推送通知。
答案 1 :(得分:0)
您需要在Worklight中发送推送通知的订阅列表以及适配器(服务器)端API以获取所有订阅
WL.Server.getUserNotificationSubscription(eventSource, userId);
因此,如果没有userId,则无法发送推送通知。
我不确定安全问题,因为userID只是用于登录应用程序的用户名。如果您的应用和事件源都有securityTests,那么Worklight会自动保存订阅和userId。
答案 2 :(得分:0)
从Worklight 6.2开始,您可以使用“广播通知”功能向所有用户(已订阅或未订阅)发送通知。
要发送广播通知,您可以使用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