4

Apple 为我们提供了一个 API 来更新用于 safari 内容阻止程序的 json (SFContentBlockerManager.reloadContentBlockerWithIdentifier),因此很明显 Apple 打算让我们使被阻止的项目可自定义。

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

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

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

似乎不存在用于修改哪些内容被阻止的文档。有没有人有一个例子或至少一个我可以使用的文档的链接?

谢谢

4

1 回答 1

3

我上周完成了这个定制。而不是将多个 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) 重新加载您的内容拦截器。

于 2015-10-27T12:23:05.700 回答