iOS 12:通知分组

一篇文章一样,本文专门介绍iOS 12中出现的Notifications更改。



在上一篇文章中,我谈到了常规创新,这一次,我将更详细地介绍通知分组。


在iOS 12中分组


为了在iOS 12中对来自应用程序的通知进行分组,您无需执行任何操作,分组将自动执行。 屏幕上的通知数量达到5时将开始堆积。



用户有机会通过系统设置影响分组。



  • 自动 (默认)-应用程序控制分组设置。
  • 通过应用程序 -忽略应用程序设置,来自应用程序的所有通知都添加到单个堆栈中。
  • -忽略应用程序设置,禁用通知分组。

分组设置


只有在设置中使用“ 自动”标志时,我们才能影响消息的分组。 为此,通知必须指定thread-id参数。 为了清楚起见,我们还将线程ID传递给字幕通知:


let content = UNMutableNotificationContent() content.threadIdentifier = threadId content.subtitle = "Thread ID: \(threadId)" 

我们发送了一些消息,并查看了分组的结果:



您还可以传递thread-id来推送通知:


 { "aps" : { "alert" : { "title" : "Cat Title" "body" : "Cat Body" } "thread-id" : "all-cats" } } 

当您为通知指定标识符时,请不要忘记在UNNotificationCategory中指定它,否则将不会在通知的扩展名中对其进行处理:


 UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], options: []) 

对于类别,您可以指定用户将在设备上显示的消息的格式,这是iOS 12的创新之一。只有在初始化类别时才能这样做:


 UNNotificationCategory(identifier: "category-simple", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: "%u     %@", options: []) 

%u参数负责组中的消息数量;可以使用summaryArgumentCount参数对其进行修改。 例如,您发布了一组新的猫,其中有10张新图片。 向用户发送10支枪没有意义,您可以发送一条计数器等于10的消息。 %@参数在屏幕上显示变量summaryArgument的值:


 let content = UNMutableNotificationContent() content.summaryArgumentCount = 10 content.summaryArgument = " " 


在每个组中,我们有3条消息,但是由于指定summaryArgumentCount参数,因此显示的消息数等于20。而且summaryArgument允许我们添加推送通知所属的类别的名称。 不错,但是现在我们遇到了本地化问题。


本地化


要实现本地化任务,请将Stringdict文件添加到项目中。



Localized String Key更改为NOTIFICATION_SUMMARY ,否则,尽管接收到本地化字符串时,带有字典名称的键将作为参数传递,但不会处理字典中的值。 其余值如图所示:



在字典的文件检查器中,选择Localize



我们指定文件进行本地化。



我们进入项目设置并添加语言以本地化俄语(ru)



多余的文件可以从项目中删除。



在代码中,我们获取了本地化的字符串,并将其作为categorySummaryFormat参数传递:


 let summary = NSString.localizedUserNotificationString(forKey: "NOTIFICATION_SUMMARY", arguments: nil) let category = UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: summary, options: []) 

结果,我们获得了出色的应用程序本地化。



上一篇文章创建的项目已更新,可以在github上找到代码。 WWDC上有两个报告专门用于通知的实现: 用户通知中的新增功能使用分组通知 。 我们将在9月28日于莫斯科举行的MBLT DEV 2018上讨论创新技术。


祝你有美好的一周! ^ _ ^

Source: https://habr.com/ru/post/zh-CN416439/


All Articles