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

标签 javascript ios json safari safari-content-blocker

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/

相关文章:

iphone - iOS 4 应用程序在 iOS 3.1.3 : Symbol not found: __NSConcreteStackBlock 上启动时崩溃

javascript - 从 Seuquelize 返回然后 JavaScript 中的代码块

javascript - 如何在增加选择元素 onmouseover 和 onmouseout 的大小时固定表格的位置

javascript - 替换 html 中的 URL 不起作用

javascript - 如何使用 jQuery 添加 o'clock 事件附加 html 代码?

javascript - 如何在 Jasmine 中假装离线?

ios - 在 UISCROLLVIEW 中滚动内容时,背景图像也会滚动

ios - Collection View 单元格中的网络任务

javascript 将 json 数组更改为另一个 json 数组

c# - 在 C# 中从 JSON 对象转换为 expando 对象