2017-08-08 27 views
1

在我目前的应用中,APNS是并没有问题运行。但是,我很困惑如何处理基于通知类型的某些有效负载。请参考下面的图片:限制APNS,斯威夫特3

enter image description here

从上到下的UISwitches对应于:

  • 所有通知
  • 集团通知
  • 上传通知
  • 内容通知
  • 评论通知

分别。

每个UISwitch的状态供以后使用保存在UserDefaults。然而,我很难考虑如何正确地使用它来限制消息进入。

是否存在客户端方法/限制传入通知出现的方式(如果有效内容包含自定义键/价值信息? Ex // Payload包含{“type”:“comment”}。

编辑: 期望的效果,当一个UISwitch是“关”,是用于旗帜UI不显示,声音不触发,而是允许对仍然被递送该类型的有效载荷的信息(更新UITabBarController的徽章)。

看起来可能需要静音通知的修改版本,因为没有任何有效载荷限制为UITabBarController的徽章更新。任何参考或意见非常感谢。

+2

这样做的一个客户端解决方案将是非常浪费的,但如果你是一个客户端,你都进不去,那么你的想法后者是合理的API,我会用这种方法去。 – the4kman

回答

1

如果您有机会获得API,服务器端解决方案是最好的。但是,如果您真的需要客户端解决方案,那也是可以的。

您无法决定是否向用户显示推送通知,系统会自动提供非通知的推送通知并将其显示给用户,而不显示静默推送通知,仅传送至应用程序。你不能改变这种行为。

不过,至少有一个解决方法我现在可以考虑一下。以静默方式发送所有推送通知,并根据用户设置为已启用的通知发送本地通知,以立即复制静默推送通知的内容。这样,您可以在交付后根据其类别筛选通知。请记住,如果通知时间紧迫,这可能不是最好的方法,因为推送通知和本地通知之间可能会稍微延迟。

+0

假设一个服务器端解决方案是合理的,合理的方式来处理这个'UISwitch'的选择器功能,使API调用触发一个标志,启用/禁用发送特定类型的消息的标志? 我编辑了我的原始文章,更具体地解释了这个应用程序功能的要求,这是我在原文中错误地没有说明的。 – iMoment

+0

如果您仍然需要传递负载,那么您应该切换通知的'content-available'属性以在静默和显示通知之间切换。是的,您应该实现在切换切换时触发的API调用。 –

+0

我想我明白了。只是要清楚:(1)我需要启用应用程序设置 - > Capabilites - >背景模式 - >远程通知。 (2)切换切换时实现API调用。 (3)让API调整有效载荷的'content-available'属性; 1为安静,0为常规,与通知的特定“类型”有关。这样,没有UI显示,声音被禁用,但我仍然会收到有效负载,并能够在后台更新UI。如果我掩盖了任何事情,请让我知道。非常感谢。 – iMoment