2017-06-23 42 views
0

我想在用戶訪問Safari上的網站時檢索URL。內容攔截器 - Swift | iOS

我有想法使用內容攔截器,但我沒有找到任何方法來獲取我的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) 

    } 

} 

是否替代解決方案不存在,或者該如何解決?

感謝

回答

1

UPDATE:可以拍動作和觸發,只是通過選擇HTML標記阻止網頁上的所有內容。您無法獲取用戶所在的網址,因爲這是違反隱私的行爲。相反,你有預定義的規則,如何和什麼時候safari應該阻止某些東西。 所以,如果你想隱藏整個頁面,你可以使用JSON規則:

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

以上塊一切都在html標籤通過不顯示它。 然後你使用觸發器詞典:

 "trigger": { 
      "if-domain": ["domaintoblock.com", "blocktodomain.org"] 
      "url-filter": ".*" 
    } 

if-domain是您的網站阻止和url-filter指定的名單「申請時加載到資源」 - 源1 以上僅供隱藏視圖元素。如果你想在你的操作中完全阻止加載,請使用"type": "block"。參見WWDC視頻中的6:25。內容攔截器是只是JSON數組規則。使目標添加到項目>應用程序擴展>內容阻塞擴展。每次Safari加載時,您的應用擴展程序都會加載它的字節碼,您必須在beginRequestWithExtensionContext(context: NSExtensionContext)中爲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擴展。他們有一個方便的事件可能會使你受益。在頁面加載之前調用SafariBeforeNavigateEvent。您可以使用另一種稱爲preventDefault()的方法停止加載頁面。因此,通過將此文件與blockList.json文件結合使用,您可以檢查所調用的事件是否具有位於blockList.json中的url。您需要首先解析JSON作爲對象才能使用它。從那裏它只是在事件處理程序中的一個for loop。您需要SafariBeforeNavigateEvent的另一個屬性,即url。讓我知道這是否幫助,謝謝:)

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

+0

感謝您的幫助,我會看看這個,) – fredericdnd

+0

你提到的是適用於MacOS的文檔,我試圖找到對於iOS的解決方案;) – fredericdnd

+0

好吧,我會盡力幫助。讓我看看我是否可以找到任何其他解決方案。 –