Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何跨多个iOS设备同步推送通知?_Ios_Push Notification_Apple Push Notifications - Fatal编程技术网

如何跨多个iOS设备同步推送通知?

如何跨多个iOS设备同步推送通知?,ios,push-notification,apple-push-notifications,Ios,Push Notification,Apple Push Notifications,如何跨多个iOS设备同步推送通知 情况是: 用户在两台设备上安装了一个应用程序。 两个设备都接收远程通知。 用户在一台设备上打开应用程序。 其他设备上的推送通知应消失 这是由许多应用程序完成的,例如Facebook Messenger,但这是如何实现的 (Swift)以下是我实施的一种方法: 收到推送通知后(推送通知必须是带有“内容可用”标志的类型,以便将推送通知发送给你的应用程序,即使用户没有点击推送通知),应用程序应向你的服务器发出呼叫,通知服务器收到推送通知。请注意,具有该标志意味着您的

如何跨多个iOS设备同步推送通知

情况是: 用户在两台设备上安装了一个应用程序。 两个设备都接收远程通知。 用户在一台设备上打开应用程序。 其他设备上的推送通知应消失

这是由许多应用程序完成的,例如Facebook Messenger,但这是如何实现的


(Swift)

以下是我实施的一种方法:

  • 收到推送通知后(推送通知必须是带有“内容可用”标志的类型,以便将推送通知发送给你的应用程序,即使用户没有点击推送通知),应用程序应向你的服务器发出呼叫,通知服务器收到推送通知。请注意,具有该标志意味着您的应用程序可能会获得两次PushNotifications:一次是在系统接收到它时,另一次是在用户点击它时。或者它可能根本就不会出现,但这是另一种讨论
  • 为了响应此调用,服务器应向为此帐户注册的其他设备发送静默推送通知(可选自定义负载)
  • 收到此推送通知后,其他客户端将应用程序标题计数设置为零(这将从通知中心清除推送通知。这没有正式记录,因此它可能会在未来版本的iOS中停止工作)

我认为以下方法应该有效(但需要注意的是):

  • 发送静默推送通知(
    内容可用
    设置,在
    aps
    中没有警报/声音/徽章,但通知的详细信息可在2中使用。)
  • 使用1中的数据创建一个本地通知,立即显示它,并保留对它的引用
  • 当用户对本地通知进行操作时,向服务器发送一个请求,让其知道
  • 服务器向同一用户的所有其他设备发送另一个静默通知,让它们知道如何删除该通知
  • 收到后,取消在2中创建的本地通知

  • 谢谢你的回答Joride,我选择了jcaron的答案,因为它对我来说似乎更清晰,结构也更好,但你的答案也投了赞成票。谢谢你的赞成票。他的回答更简洁。一定要查看我对他的回答的评论。这是一个很好的方式,但有很多原因导致无声推送通知可能不会到达(我知道,我在安装新应用程序时为此工作了半年),最重要的是:1)当用户关闭应用程序的后台获取时(许多“乐于助人”的侄子会为他们的家人这样做)2)当用户通过从应用程序切换程序屏幕向上滑动应用程序来终止应用程序时。更好的方法是发送“常规”推送(在“aps”中带有警报/徽章)以及可用的内容集。这并不是说这可能会导致推动两次。