如何在IOS上对whatsapp等通知进行分组

时间:2016-07-13 11:00:19

标签: ios iphone swift notifications

我在我的应用程序中有一些通知您使用GCM但是每个通知都显示在一个目标中,因此当您收到2或3个通知时会令人讨厌。

如何为我的应用分组一个目标中的所有通知?我认为这将像android一样,我必须用一些ID识别通知,但我没有找到任何关于它的信息。

应用程序处于后台时执行的代码:

// [START ack_message_reception]
func application( application: UIApplication,
                  didReceiveRemoteNotification userInfo: [NSObject :AnyObject]) {
    print("Notification received: \(userInfo)")
    // This works only if the app started the GCM service
    GCMService.sharedInstance().appDidReceiveMessage(userInfo);
    // Handle the received message

    // [START_EXCLUDE]
    NSNotificationCenter.defaultCenter().postNotificationName(messageKey, object: nil,
                                                              userInfo: userInfo)
    // [END_EXCLUDE]
}

GCM消息代码是:

array( 'body' => 'Someone wants to practice with you !!!',
                                            "sound" => "default",
                                            "vibrate" => "1",
                                            "time_to_live" => "1"
                                    );

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

具有相同折叠标识符的多个通知作为单个通知显示给用户。这可以从服务器端处理,而不是在客户端处理。 APNS标头apns-collapse-id将用于更新先前发送的通知。

有关详细说明,请参阅此处:

Table 8-2APNs request headers

Apple Developer Guide

答案 1 :(得分:1)

我知道这个问题是很久以前提出的,但是我发布此答案可能会对寻求相同解决方案的人有所帮助。可以从iOS 12在客户端对通知进行分组。

您需要做的只是设置一个属性,它将为您完成所有工作。下面是使用示例的说明。

UNMutableNotificationContent *内容; //设置所有属性,例如标题,正文等。在这里,我将解释如何将通知分组。

LambdaMetaFactory

说明:我们有一个名为threadIdentifier的属性来对通知进行分组,您只需要将此标识符设置为不同的唯一组标识符,iOS便会处理其余的标识符。它将显示所有具有相同标识符的通知(一组)。

示例:如果我们以WhatsApp示例为例,它们基于消息发件人对消息通知进行分组,因此我们可以将消息发件人编号/标识符设置为仅此的threadIdentifier。

// Set property to group notifications content.threadIdentifier = @"your group identifier";

此处引用了Using Grouped Notifications的Apple指南