Push notification 多用户应用程序中推送通知的最佳实践?

Push notification 多用户应用程序中推送通知的最佳实践?,push-notification,push,apple-push-notifications,google-cloud-messaging,Push Notification,Push,Apple Push Notifications,Google Cloud Messaging,我正在研究一种推送架构,它需要支持允许多个用户的应用程序。这意味着多个用户可以使用其凭据登录应用程序。我遇到的问题是,如果用户A允许推送通知,然后注销,然后用户B登录并开始获取用户A的推送通知,该怎么办 处理这类事情的最佳实践是什么?我的一个想法是,你可以记住最后一个登录的用户,只向“登录”的用户显示推送通知。您必须在消息负载中发送某种类型的用户上下文,以便根据登录的用户进行检查。不过这感觉有点怪 还有人碰到这个吗?这似乎是一个真正相关的问题,尤其是对于家庭倾向于共享设备的平板电脑 我认为你的建

我正在研究一种推送架构,它需要支持允许多个用户的应用程序。这意味着多个用户可以使用其凭据登录应用程序。我遇到的问题是,如果用户A允许推送通知,然后注销,然后用户B登录并开始获取用户A的推送通知,该怎么办

处理这类事情的最佳实践是什么?我的一个想法是,你可以记住最后一个登录的用户,只向“登录”的用户显示推送通知。您必须在消息负载中发送某种类型的用户上下文,以便根据登录的用户进行检查。不过这感觉有点怪


还有人碰到这个吗?这似乎是一个真正相关的问题,尤其是对于家庭倾向于共享设备的平板电脑

我认为你的建议在多用户应用程序中是可以接受的。在客户端实现这一点要比在服务器端简单得多。缺点是浪费额外的带宽来发送不需要的通知。但绝大多数的使用可能是单用户的,所以这可能没什么大不了的

另一种方法是跟踪服务器上已登录的用户及其当前注册ID。这可能更复杂,因为A可以登录到多个设备,然后从设备1注销,B登录到设备1,等等。您的服务器必须跟踪所有这些。因此,可能需要另一个表来跟踪“登录用户”与“注册ID”之间的关系


如果您不喜欢发送不必要的通知,请使用服务器路由。如果你重视保持简单的原则,就遵循客户的路线

我们通过向APSN注册设备、获取设备令牌并通过ws-server将其发送到我们的服务器来实现这一点

在服务器端,设备令牌仅与上次登录的用户关联

New app
User A (first ever user) uses IPAD A
Register with APSN, get token
Send token to our servers through ws
Search for token in db, token is new, store it
assign token to USER A

Next user logs into app
Register with APSN, get token
Send token to our servers through ws
Search for token in db, token exists already
Remove connection to USER A
assign token to USER B

SEND Notification to device WITH USERNAME
if username is logged in show it - else dont

仍然不完美,因为它首先发送到主屏幕,所以对于所有用户来说

让我们假设应用程序的用户可以登录多个设备

我们必须在服务器端制作两个API:

func setUserDeviceNotifyToken(userId:Int,deviceToken:String){}
func removeUserDeviceNotifyToken(用户ID:Int,deviceToken:String{}
在应用程序端,您必须在每次登录时调用
setUserDeviceNotifyToken
API,并在每次注销时调用
removeUserDeviceNotifyToken

在服务器端,您可以使用其
deviceNotificationToken
跟踪每个用户,并发送正确设备的通知

注意:如果您的服务不支持一个用户的多设备登录,您只需通过一次
updateUserDeviceNotifyToken
即可处理,并传递
null
以删除用户的设备令牌


< > >强> >在调用<代码之前>请不要让用户注销:“ReaveUrServEnEngEndoTyTygys< /Case> API .< /P>伟大的分析-谢谢分享您的想法。请给我一些好的东西在这里考虑。同时您的应用程序可以检查是否通知了预期的接收者和当前登录的用户之间的匹配;当应用程序是在后台或根本不运行时,先前注册令牌的通知仍将到达手机/平板电脑,并根据设置显示为横幅或警报弹出窗口。我认为最终您的服务器必须知道用户何时注销(无论是显式注销,还是在超时后,或其他人何时登录)并且在用户再次登录之前,不会为该用户发送通知。