有谁知道您实际上是如何更新 Safari 内容拦截器的 blockerList.json 文件的?

Does anyone know how you actually update the blockerList.json file for the safari content blocker?

Apple 已向我们提供了 API 来更新用于 safari 内容拦截器 (SFContentBlockerManager.reloadContentBlockerWithIdentifier) 的 json,因此很明显 Apple 打算让我们自定义被拦截的项目.

我已经研究它很长时间了,但我无法弄清楚您实际上是如何做到这一点的。

我尝试过将不同的 json 文件加载到扩展程序中(一个用于广告,一个用于网站等),但发送多个文件似乎总是会破坏扩展程序。

我也试过在应用程序中编辑 blockerList.json 文件,但这似乎也破坏了扩展。我还被告知我们不允许编辑与我们的应用程序捆绑在一起的资源。

修改被阻止内容的文档似乎不存在。有没有人有我可以使用的一些文档的示例或至少 link?

谢谢

我上周完成了这个定制。而不是将多个 jsons 传递给扩展,您应该从数组中应用程序主包的 json 文件中读取所有规则(广告、网站等),然后将这个规则数组写入一个新的 json文件,将这个json保存到APP组容器路径 作为

[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_IDENTIFIER] URLByAppendingPathComponent:@"SharedJsonFile.json"]

并在扩展的 beginRequestWithExtensionContext 方法中,从路径加载 json 作为

NSURL *jsonPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:YOUR_APP_GROUP_IDENTIFIER] URLByAppendingPathComponent:@"SharedJsonFile.json"]; 

因此,如果您只想应用广告规则和转义网站规则,则必须更新 SharedJsonFile.json 文件以仅包含广告规则数组,然后使用 (SFContentBlockerManager.reloadContentBlockerWithIdentifier) 重新加载您的内容拦截器.