Apple 为我们提供了一个 API 来更新用于 safari 内容拦截器的 json (SFContentBlockerManager.reloadContentBlockerWithIdentifier),因此很明显 Apple 打算让我们自定义被拦截的项目。
我已经研究它很长时间了,但我无法弄清楚您实际上是如何做到这一点的。
我尝试过将不同的 json 文件加载到扩展程序中(一个用于广告,一个用于网站等),但发送多个文件似乎总是会破坏扩展程序。
我也尝试过在应用程序中编辑 blockerList.json 文件,但这似乎也破坏了扩展。我还被告知我们不允许编辑与我们的应用捆绑在一起的资源。
修改被阻止内容的文档似乎不存在。有没有人有我可以使用的示例或至少指向某些文档的链接?
谢谢
最佳答案
我上周完成了这个定制。不要将多个 json 传递给扩展,您应该从数组中应用程序主包的 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) 重新加载您的内容拦截器。
关于javascript - 有谁知道您实际上是如何更新 safari 内容拦截器的 blockerList.json 文件的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941017/