内容拦截器-Swift | iOS

内容拦截器-Swift | iOS,ios,swift,url,safari-content-blocker,Ios,Swift,Url,Safari Content Blocker,当用户在Safari上访问网站时,我试图检索URL 我想使用内容拦截器,但在blockList.json文件中找不到任何获取网站URL的方法 我试图在ContentBlockerRequestHandler类中打印一些内容,但什么也没发生 下面是课堂: class ContentBlockerRequestHandler: NSObject, NSExtensionRequestHandling { func beginRequest(with context: NSExtension

当用户在Safari上访问网站时,我试图检索URL

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

我试图在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)

    }

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

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

    "action":{
          "type": "css-display-none"
          "selector": "#html"
     }
上面的代码通过不显示来阻止html标记中的所有内容。 然后使用触发器字典:

     "trigger": {
           "if-domain": ["domaintoblock.com", "blocktodomain.org"]
           "url-filter": ".*"
     }
如果域是要阻止的站点列表,url筛选器指定加载时应用于哪些资源-源1。 以上内容仅在视图中隐藏该元素。如果要完全阻止加载,请在操作中使用type:block。请参见WWDC视频中的6:25。内容拦截器只是JSON数组规则。要使其成为目标,请将目标添加到项目>应用程序扩展>内容阻止程序扩展。每次加载Safari时,应用程序扩展都会加载其字节码,您必须在BeginRequestWithExtensionContext:NSExtensionContext中为Safari提供blockerList.json。请参阅WWDC视频中的9:29。从那里你就完成了,这是自动的。这应该足够让你开始了。如果我帮忙,请告诉我。多谢各位:

有关内容阻止的更多信息,请参阅。有关更详细、更困难的示例,请参见

以前的职位

你可以考虑浏览Safari扩展。他们有一个方便的活动,可以让你受益。SafariBeforeNavigateEvent在页面加载之前调用。您可以使用另一个名为preventDefault的方法停止加载页面。因此,结合使用blockList.json文件,您可以检查调用的事件是否具有blockList.json中的url。您需要首先将JSON解析为对象才能使用它。从这里开始,它只是事件处理程序中的一个for循环。您需要SafariBeforeNavigateEvent的另一个属性,即url。如果这有帮助,请告诉我,谢谢:


谢谢你的帮助,我会看看这个;您提到的文档是针对macOs的,我试图为iOS找到解决方案;好的,我会尽力帮忙的。。让我看看是否能找到其他解决方案。据wwdc称,safari扩展了我提供给你的iOS和macOS上的链接。有关iOS safari内容阻止的更多信息,请参阅。谢谢@Mihir Thanekar,我会试试这个!