Push notification Worklight:无用户ID的推送通知

Push notification Worklight:无用户ID的推送通知,push-notification,ibm-mobilefirst,Push Notification,Ibm Mobilefirst,敬请建议,是否可以在没有用户ID的情况下发送推送通知?假设我们希望向所有下载了我们的应用程序的用户发送推送消息。或者由于安全原因,用户ID无法存储在数据库中(或在应用程序中使用)。您需要订阅列表以在Worklight中发送推送通知,并且需要适配器(服务器)端API以获取所有订阅 WL.Server.getUserNotificationSubscription(eventSource, userId); 因此,如果没有userId,就不可能发送推送通知 我不确定是否存在安全问题,因为userID

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

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

WL.Server.getUserNotificationSubscription(eventSource, userId);
因此,如果没有userId,就不可能发送推送通知


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

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

       <realm name="PersistentCookie" loginModule="WeakDummy">
            <className>com.worklight.core.auth.ext.PersistentCookieAuthenticator</className>
        </realm>
用户或开发人员不需要进一步的交互。只需将类添加到authenticationConfig.xml就足以生成用户ID


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

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

有关更多信息,请参阅

要发送广播通知,可以使用WL.Server.sendMessage(applicationId,notificationOptions)。有关更多信息,请访问

谢谢你的建议。这看起来是个不错的主意,不过每次重启应用程序时都要重新订阅。有很多方法可以减少重新订阅的次数。您可以将此持久cookie ID保存在本地存储中,并继续使用它,仅在必要时清除它。您可以重新生成和存储一个新的用户ID,并且不绑定到单个用户ID。请记住,从持久cookie验证器生成的用户ID是持久的,因此您只需要在清除cookie时重新订阅,而不是每次重新启动应用程序。我可以理解并同意您的意见,但这是我的客户端的要求。应用中根本没有登录页面。如果您只想向应用的所有用户发送通知,您可以。只需确保您已在应用程序中设置为
true
"PersistentCookie":{"userId":"6410a0f9-98fb-4940-a127-da940c5d7e16","attributes":{},"isUserAuthenticated":1,"displayName":"6410a0f9-98fb-4940-a127-da940c5d7e16"}