内容拦截器 - Swift | iOS版

时间:2017-06-23 14:37:34

标签: ios swift url safari-content-blocker

我正在尝试在用户访问Safari网站时检索网址。

我有想法使用内容拦截器,但我找不到任何方法来获取blockList.json文件中的网站网址。

我尝试在ContentBlockerRequestHandler类中打印一些东西,但什么都没发生。

这是班级:

class ContentBlockerRequestHandler: NSObject, NSExtensionRequestHandling {

    func beginRequest(with context: NSExtensionContext) {

        let attachment = NSItemProvider(contentsOf: Bundle.main.url(forResource: "blockerList", withExtension: "json"))!

        print("test")

        let item = NSExtensionItem()
        item.attachments = [attachment]

        context.completeRequest(returningItems: [item], completionHandler: nil)

    }

}

是否存在替代解决方案,或解决方案是什么?

由于

1 个答案:

答案 0 :(得分:1)

更新:您可以通过选择html标记来制作动作并触发并阻止页面上的所有内容。您无法获取用户所在的网址,因为这是违反隐私的行为。相反,你有预定义的规则,关于safari应该如何以及何时阻止某些内容 因此,如果您想隐藏整个页面,可以使用json规则:

~http(?<=\bhttp)s?://[^/]+/[ti]/[^/]+/\S+~

上面通过不显示来阻止html标签中的所有内容。 然后使用触发器字典:

    "action":{
          "type": "css-display-none"
          "selector": "#html"
     }

"trigger": { "if-domain": ["domaintoblock.com", "blocktodomain.org"] "url-filter": ".*" } 是您要阻止的网站列表,if-domain指定&#34;加载时要应用的资源&#34; - 来源1。 以上仅隐藏元素。如果您想阻止加载,请在您的操作中使用url-filter。请参阅WWDC视频中的6:25。内容拦截器只是JSON数组规则。要为项目添加目标,请执行以下操作:应用程序扩展&gt;内容拦截器扩展。每次加载Safari时,您的应用扩展程序都会加载它的字节码,您必须在"type": "block"中为Safari提供blockerList.json。请参阅WWDC视频中的9:29。从那里你就完成了,它是自动的。这应该足以让你开始。如果我帮忙,请告诉我。谢谢你们:)

有关内容阻止的详细信息,请参阅https://developer.apple.com/videos/play/wwdc2015/511/。有关更详细,更难的示例,请参阅https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AppExtensionKeys.html

上一次发布

您可以考虑查看Safari Extensions。他们有一个方便的事件,可能会使您受益。在页面加载之前调用beginRequestWithExtensionContext(context: NSExtensionContext)。您可以使用另一种名为SafariBeforeNavigateEvent的方法来阻止页面加载。因此,将此与preventDefault()文件结合使用,可以检查被调用的事件是否具有blockList.json中的url。您需要首先将JSON解析为对象才能使用它。从那里它只是事件处理程序中的blockList.json。您需要for loop的另一个属性SafariBeforeNavigateEvent。如果这有帮助,请告诉我,谢谢:)

https://developer.apple.com/documentation/safariextensions/safaribeforenavigateevent https://developer.apple.com/documentation/safariextensions/safarievent/1635502-preventdefault https://developer.apple.com/documentation/safariextensions/safarievent https://developer.apple.com/documentation/safariextensions

相关问题