问题标签 [safari-content-blocker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2974 浏览

ios - 未调用 iOS9 Safari 内容阻止程序扩展

我正在玩 XCode7 beta,试图测试闪亮的新“内容拦截器扩展”。示例类采用与NSExtensionRequestHandling(已知的)共享扩展相同的协议。与共享扩展的本质区别在于,该类是普通的NSObject,而不是*ViewController子类,因为您知道,Blocker 扩展不应该显示任何 UI 反馈。至少这是我的理解。无论如何,beginRequestWithExtensionContext应该将阻止程序声明 JSON 提供给扩展点的关键方法不会被调用。该扩展确实具有TRUEPREDICATENSExtensionActivationRule,并且 Safari 确实在新的 Safari 配置“内容阻止程序”中确认了我的主机应用程序的存在。但仍然没有雪茄。

有人知道它是否应该在测试版的早期就已经工作了,还是只是一个新闻稿?

而且,哦,当我们这样做的时候,是否有任何关于该声明性 JSON 格式的文档,或者它只是我的 Google-Fu 让我失望了?:)

0 投票
0 回答
595 浏览

nsuserdefaults - iOS - Safari 内容拦截器无法从 NSUserDefaults 读取数据

一段时间以来,我一直在研究内容阻止应用程序。我在主应用程序中有一个开关,应该打开阻塞过滤器。此开关的值保存在应用组启用的 NSUserDefaults 属性中,因此阻塞扩展可以读取它是否启用(如果启用阻塞,则返回完整的 json 列表,否则返回空列表)。

在模拟器上这工作得很好,但是当我开始在设备上运行它(在 5s 和 5c 上测试)时,扩展无法再从 UserDefaults 读取属性(它总是返回 nil)并且应用程序无法读取属性从扩展不再。

我认为这与应用程序组有关,但我似乎找不到任何问题(它在 Capibilities 等中启用)所以我有点迷茫。有没有人遇到过这个问题?如果是这样,你能解决它吗?

我正在使用 Xcode 7 beta、iOS 9 beta2 和 Mac OS X Yosemite。

0 投票
0 回答
187 浏览

swift2 - 从应用程序访问 Safari 扩展程序中的文件

我正在构建 Safari 内容拦截器(xcode 7 beta 4)。

在我SFContentBlockerManager.reloadContentBlockerWithIdentifier用来实现blockerList.json文件的应用程序中,但我无法访问它以用新规则重写。

抛出异常,关于file not found.

此外,似乎beginRequestWithExtensionContext仍然没有调用(没有断点或 NSLog 工作)。所以 - 我也无法通过扩展代码加载更新的 json 文件。

0 投票
1 回答
970 浏览

swift - 带有字符串而不是文件的内容拦截器扩展

NSItemProvider(contentsOfURL: NSBundle.mainBundle().URLForResource("blockerList", withExtension: "json")在内容拦截器扩展中使用该功能。

问题是我所有的规则都存储在几个字典中,当我使用这个功能时,总是因为规则发生了变化。我目前正在从这些字典中创建一个看起来像的字符串,"[{\"trigger\": {\"url-filter\": \"webiste.com\"},\"action\": {"\type\": \"css-display-none\",\"selector\":\".testContentBlocker\"}}]"我必须将其转换为 JSON 文件,以便最终能够在前面描述的函数中使用它。

不必将字符串放在 JSON 文件中才能使用它,我可以做一些更简单的使用NSItemProvider()吗?

0 投票
2 回答
1850 浏览

ios - 在 iOS 中重新加载内容拦截器

我听说 iOS 支持内容拦截器,所有的拦截都是由blockerList.jsonApp Bundle 中的一个名为的文件完成的。虽然我知道这SFContentBlockerManager.reloadContentBlockerWithIdentifier()会重新加载blockerList.json. 但是,我认为这没有任何用处;这blockerList.json是主包的一部分,不能修改。因此,有什么方法blockerList.json可以修改(或者扩展名可以指向另一个文件,被删除和重新创建,不使用 JSON 等)?

0 投票
2 回答
630 浏览

ios - 无法读取应用组的 NSUserDefaults 但能够在其上写入

在开发内容阻止程序扩展时,我遇到了一个非常奇怪的问题。我正在尝试使用 NSUserDefaults 与应用程序组在它和我的应用程序之间共享数据,但是从应用程序组读取某些内容总是会使扩展程序崩溃。

这是一个有效的示例代码:

该扩展程序不会返回错误,然后我可以here在我的应用程序中阅读。

这是同样的事情,还有一行试图读取我刚刚确定的值:

它返回Optional(Error Domain=ContentBlockerErrorDomain Code=3 "(null)")

只有在真实设备上运行代码时才会出现问题,它正在模拟器上运行。有人知道问题的根源是什么吗?

0 投票
3 回答
1608 浏览

ios - iOS 内容阻止扩展加载多个 JSON 文件

是否可以从Content Blocker Extension返回多个 JSON 文件?在我的 UI 中,用户启用/禁用不同的过滤器,每个过滤器都由一个单独的文件表示。我目前有(尽管迭代了多个,但它只加载一个):

我试过做多个项目和一个带有多个附件的项目。如果不可能有单独的文件,有什么方法可以组合多个(或以编程方式生成)?

0 投票
1 回答
151 浏览

ios - 仅在满足某些条件时才调用 Safari Content Blocker 扩展?

是否有可能仅在满足某些条件时才调用 iOS 9 中的 Safari 内容阻止程序扩展 - 例如,如果它在某个时间段内(假设您想阻止 9-5 的跟踪器,但不是在晚上) ,或者如果您使用的是蜂窝网络?我知道理论上这可以在“设置”应用程序中手动完成。但是有没有办法让它自动化,所以你可以一直让内容拦截器保持打开状态?

0 投票
1 回答
1698 浏览

ios - iOS 9 内容拦截器是否适用于 UIWebView?

内容拦截器从 Safari 启用并作为扩展程序工作,但它们会影响 UIWebView(应用内浏览器)吗?

0 投票
2 回答
656 浏览

swift - 从应用程序内禁用 iOS 9 Safari 内容阻止?

我正在寻找一种方法来轻松地从应用程序内停用 safari 内容阻止。知道怎么做吗?可以SFContentBlockerManager.reloadContentBlockerWithIdentifier对此有所帮助吗?