我应该如何处理APNS的多帐户应用程序?

我应该如何处理APNS的多帐户应用程序?

问题描述:

我目前正在调查通过在线离线支持的应用程序,并找出APNS的使用,这是很容易理解,当我的应用程序只与单个用户的交易。(就像SMS)我应该如何处理APNS的多帐户应用程序?

我的理解是,安装到特定设备的每个应用程序都将拥有自己的设备令牌(即使注销到APNS并重新注册后也不会更改)。所以,当一个用户从不同的设备登录时,APNS又会依次识别服务器。

但是,当我尝试实施多账户应用程序(就像Facebook一样,不同的人可以使用相同的手机登录),出现了一些问题。

当用户A登录时,当应用程序处于后台状态时,它确实收到通知。

但是,当用户A注销(当电话没有互联网连接,这意味着不能立即更新服务器删除帐户),然后用户B登录,同时服务器试图推送通知到用户A的电话,通知已经由电话接收(但是这是用户A的通知),并且用户B将接收到(在实际情况下永远不会发生的)。

看来,APNS无法检查应用程序内帐户身份验证。

所以,我的问题是,

  1. 有没有什么办法来检查并删除手机上的通知(我读过的苹果文档,并注意有一个QoS的存储最后通知)?

  2. 在使用APNS时,处理这种认证问题的好方法是什么?

如果我有任何概念误解,请如有纠正我的问题。并希望我的问题不健全的愚蠢和笨拙而且也没有任何问题的重复...

因此,在第一:

如何用户A可以注销并在Facebook登录没有网络?

当用户B登录,因此互联网连接,然后你可以发送到你的服务器:现在userB在这个设备令牌。

而对于案例:用户B登录,同时服务器尝试推送通知到手机 用户A

如果应用程序是拼命地跑,然后APNS通知,你会得到

application: (UIApplication*)app didRegisterForRemoteNotificationsWithDeviceToken: (NSData*)deviceToken 

不在设备通知中心消息窗口中。

,你可以这样做:

1)如果用户A已经在日志中,然后发送本地通知作秀通知

2)如果在日志或用户等用户logouted,然后什么都不做

希望它有帮助。也许我错了,如果你是其他人。

+0

感谢:) ,也许Facebook的例子不是那么好xD 因为我的应用程序将支持可以在离线模式下完成的功能。 我曾尝试注销Facebook应用程序没有互联网连接,并以某种方式注销我.__。 – user1516507 2012-08-03 01:07:12

+0

而且,发送Push notif的坏主意取决于在线用户。您可以使用本地通知,以获得良好的结果。但是,我明白了,你需要使用APNS – CReaTuS 2012-08-03 02:06:36

+0

哦!你的意思是,我不应该使用APNS的默认“提醒”,而应该改变我的策略为: 服务器仍然要求APNS将通知推送到设备,而不显示任何类型的警报视图以及徽章号码的增加,而是发送一些用户信息,如“接收者”:“[email protected]”,并检查刚刚登录的用户是否是[email protected]。如果是,请充分利用本地通知,否则什么都不要做。 这是你的意思吗? – user1516507 2012-08-03 11:15:05

如果您有一项功能可以从应用程序中注销(无需登录新用户),我找不到任何停止推送通知的方式,除非让服务器知道用户已经登录出。

如果没有互联网连接,则不能进行正确的注销。如果您需要使用此功能,则应验证与服务器的注销。由于无法到达服务器,因此可以通知用户注销失败。

下面是一个例子:

  • 用户A登录在对具有设备令牌TX装置X。

    - >服务器联营令牌TX属于用户A.

  • 用户A登录在设备Y,其具有设备令牌TY。

    - >服务器令牌相关联的TX和TY到属于用户A发送到用户

  • Push消息甲

    - >服务器发送推送消息到TX和TY。

  • 用户A从设备X和用户B登录注销在设备X.

    - >服务器删除令牌TX到用户的相关联的

    - >服务器联营令牌TX给用户B.

  • Push消息发送至用户A

    - >服务器向TY发送推送消息。发送到用户B

  • Push消息

    - >服务器发送推送消息给TX。

  • 用户B注销,但没有互联网连接

    - >登录失败,用户B仍然登录,接收对话 “无法注销”

+0

谢谢!但是,正如我在另一个答案中的评论中提到的,我的应用程序需要脱机功能(实际上,我的应用程序是脱机主导的一个.....所以不知何故无法提示用户注销失败,因为他们没有't连接到服务器....看起来很奇怪...) 不知道Facebook如何让它Orz – user1516507 2012-08-03 05:21:17