我在我的应用程序中有一些通知您使用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"
);
感谢您的帮助。
答案 0 :(得分:1)
具有相同折叠标识符的多个通知作为单个通知显示给用户。这可以从服务器端处理,而不是在客户端处理。 APNS标头apns-collapse-id将用于更新先前发送的通知。
有关详细说明,请参阅此处:
答案 1 :(得分:1)
我知道这个问题是很久以前提出的,但是我发布此答案可能会对寻求相同解决方案的人有所帮助。可以从iOS 12在客户端对通知进行分组。
您需要做的只是设置一个属性,它将为您完成所有工作。下面是使用示例的说明。
UNMutableNotificationContent *内容; //设置所有属性,例如标题,正文等。在这里,我将解释如何将通知分组。
LambdaMetaFactory
说明:我们有一个名为threadIdentifier的属性来对通知进行分组,您只需要将此标识符设置为不同的唯一组标识符,iOS便会处理其余的标识符。它将显示所有具有相同标识符的通知(一组)。
示例:如果我们以WhatsApp示例为例,它们基于消息发件人对消息通知进行分组,因此我们可以将消息发件人编号/标识符设置为仅此的threadIdentifier。
// Set property to group notifications
content.threadIdentifier = @"your group identifier";
此处引用了Using Grouped Notifications的Apple指南