iOS"thread-id"不对推送通知进行分组

Alb*_*ori 7 push-notification apple-push-notifications ios ios10

文档:

thread-id| string| 当显示通知时,系统可视地将具有相同线程标识符的通知组合在一起.对于远程通知,threadIdentifier属性的值设置为此请求标头的值.

我们的推送通知有效负载:

{
    aps =     {
        alert =         {
            body = "Leeroy J asked you: Test Push Notification";
        };
        badge = 12;
        sound = default;
        "thread-id" = 9150;
    };
    n = "6kQ/0x6556";
    r = 9150;
}

{
    aps =     {
        alert =         {
            body = "Leeroy J re: Test Push Notification";
        };
        badge = 13;
        sound = default;
        "thread-id" = 9150;
    };
    n = "6l8/0x6582";
    p = 7197;
    r = 9150;
}
Run Code Online (Sandbox Code Playgroud)

这是消息中心的样子:

在此输入图像描述

我希望它们在视觉上与其他通知不同......或者当其他通知介于两者之间时将它们组合在一起.在我们的测试中,情况都不是这样.

我究竟做错了什么?或者我误解了这个功能?

Hon*_*ney 15

你不需要:

  • apns-collapse-id
  • NotificationContentExtension

从来没有在文档中提到你需要它们。只是他们有关系

解决方案:

对我来说,它开箱即用。只是 iOS不会立即将通知呈现为组。

  1. thread-ids发送通知
  2. 然后等等。让您的 iPhone/iPad 锁定屏幕关闭。(我的被锁了)。
  3. 然后再发一条消息
  4. 如果那不起作用,那么请耐心一点,然后再试一次。

然后突然间它开始分组并按预期工作!!!

要进行堆叠,您需要一些通知。如果空间太大,更可能是在 iPad 上,则需要更多空间来开始堆叠它们。还要确保您已将通知分组设置正确设置为“自动”

在此处输入图片说明

的其他用法thread-id

的使用thread-id还有另一个目的,最好在消息传递应用程序中进行解释。想想 iMessage。

在此处输入图片说明

  1. 你收到朋友发来的消息。
  2. 你长按通知。
  3. 它将打开一个弹出窗口,您可以在其中从 contentExtension 中聊天
  4. 如果您的朋友发送更多消息,那么您的内容扩展程序didReceiveNotification将不断收到呼叫。它会被调用,以便您可以更新对话。

当您的视图控制器可见时,此方法可能会被多次调用。具体来说,当新的通知到达时,其 threadIdentifier 值与已显示通知的线程标识符匹配时再次调用它。该方法在通知内容应用扩展的主线程上调用。

参考didReceive(_:)文档

有关更多信息,请参阅此答案

概括

分组获取单个 contentExtension 的连续回调thread-id是使用thread-id!


什么是apns-collapse-id

如果您发送了通知并且需要更正/更新,则使用。例如,您是《华盛顿邮报》并且有人刚刚赢得了总统职位。

您首先发送一个标题为“Albert Bori 赢得 2020 年选举!!”的通知。正文为:此消息将很快更新...

然后 3 分钟后,您将获得更多信息,表明他赢得了 40 个州的胜利并在 10 个州失败。因此您更新了正文。然后你会得到更多关于确切票数的信息。所以你再次更新身体。您可以不断更新消息而不会提醒(没有声音,也没有新横幅。它只会在通知中心更新)它被更新的用户。

只有当用户已经关闭/查看通知时,具有相同通知的通知apns-collapse-id才会提醒/通知用户。这不是为了分组,而是为了合并!


Ton*_*ony 6

不幸的是,你没有免费获得这个.您需要创建Notifictation UI扩展,并实现您自己的UI(在这种情况下,它是一个对话UI),并在接收具有相同thread-id的新通知时更新UI .

  • 在强制触摸时加载扩展的意图是行为,您无法自定义锁定屏幕和通知屏幕上显示的通知单元格.您可以尝试[apns-collapse-id](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11- SW13)进入APNs请求头. (2认同)