创建消息过滤器扩展

苹果在iOS 11中引入了IdentityLookup,现在允许开发人员过滤SMS和MMS消息。

并非每条消息都会通过您的扩展程序,IdentityLookup仅在收到来自未知发件人的消息时才将查询传递给过滤器应用程序扩展程序。

另一个限制是不允许您将任何数据从扩展名写入共享容器。

有关IdentityLookup的更多详细信息,请查看Apple Docs。

要创建扩展,您要做的就是创建一个新的iOS应用,然后从Xcode菜单中选择File / New / Target,然后选择Message Filter Extension。

在您的扩展中,将自动为您创建一个从ILMessageFilterExtension继承的类。 它还符合ILMessageFilterQueryHandling协议,该协议有一个要求,即handle(_ queryRequest:context:completion 🙂方法。

在这种方法中,类型为ILMessageFilterQueryRequest的查询请求对象将传递给您,您将可以访问消息的发件人messageBody

应用过滤规则后,需要调用完成闭包,该闭包将使用ILMessageFilterQueryResponse类型的单个参数,该参数需要创建并设置其action属性。

如果要防止显示该消息,则需要将操作类型设置为.filter。 其他两个选项.none.allow将无效,该消息将正常显示。

这就是创建消息筛选器扩展所要做的全部。

以下是来自“垃圾邮件过滤器” SMS应用程序的示例,该应用程序使用CoreData共享容器加载用户创建的关键字列表,这些关键字用于过滤邮件正文:

编码愉快!