仅允许一个用户单击推送通知

时间:2019-04-10 20:45:40

标签: ios swift push-notification silent

我想向我的应用程序的所有用户发送推送通知,以将他们带到应用程序中的特定页面。

但是,我只希望一个用户能够点击它并转到页面,并且当一个用户加载该推送将其带入的页面时,我想从所有其他用户中静默删除该推送。

这有可能吗?我不确定如何抓取所有发送的推送通知,而UNUserNotificationCenter仅抓取在该设备上发送的推送通知。

提前谢谢!

4 个答案:

答案 0 :(得分:1)

我相信,如果您使用静默通知,这是可能的。

  1. 发送opt.on('-s','--service [String]','twitter (tw) or identica (id)') do |val| 的静默通知。
  2. 所有设备都会收到type A通知,并在其UI中创建本地通知。
  3. 用户按此本地通知并从服务器加载页面。
  4. 在click / load事件上使用该用途的应用程序会将一些请求/事件发送到您的服务器,有人可以访问该链接。
  5. 您的服务器将发送另一个type A的静默通知。
  6. 所有设备都会收到type B通知,并使用链接代码从其自己的通知中心丢弃type B通知。

以下是有关清除通知的帖子:

可能的问题/问题:

  • 在用户点击type Astep 3之间,如果您考虑推送时间,可能会花费一些时间,因此其他人可能会按下该链接。不是即时的。在恶劣的网络条件下,这可能会变得更糟。

  • 对于那些在其设备上发出哔哔声并最终清除通知的用户,可能是令人讨厌的,因为其他人的速度更快。

答案 1 :(得分:0)

发送推送通知后,您将无法删除它。

尽管您可以通过发送另一次推送将徽章重置为零来更新App徽章。虽然这不会删除先前的推送消息,但可以在应用程序图标上隐藏红色标志。

答案 2 :(得分:0)

您只需通过

删除通知
  

将徽章计数发送为0

APNS有效载荷将为:

{
    "aps" : {
        "alert" : "",
        "badge" : 0,
        "sound" : "bingbong.aiff"
    }
}

答案 3 :(得分:0)

如果您要删除或减少徽章计数,则可以轻松完成

UIApplication.shared.applicationIconBadgeNumber = max(UIApplication.shared.applicationIconBadgeNumber - 1, 0)

如果您要从通知中心删除单个通知,则可以使用iOS 10及更高版本中的UNUserNotificationCenter

UNUserNotificationCenter对象管理应用程序或应用程序扩展中的所有与通知相关的行为。

您可以使用以下方法从通知中心删除指定的通知请求:

func removeDeliveredNotifications(withIdentifiers: [String])