2015-06-10 65 views
6

我在玩XCode7測試版,試圖測試閃亮的新「Content Blocker Extension」。示例類正在採用與(已知)共享擴展相同的NSExtensionRequestHandling協議。與共享擴展的本質區別在於,該類是普通的NSObject而不是*ViewController子類,因爲您知道阻止擴展不應顯示任何UI反饋。至少這是我的理解。無論如何,關鍵的方法beginRequestWithExtensionContext應該將阻塞聲明JSON提供給擴展點,不會被調用。該擴展名有TRUEPREDICATE作爲NSExtensionActivationRule,Safari確實在新的Safari配置「Content Blockers」中確認了我的主機應用程序的存在。但仍然沒有雪茄。iOS9 Safari內容攔截器擴展未調用

是否有人知道它是否應該早在beta版本中工作,或者它只是一個新聞稿?

而且,哦,雖然我們在這裏,有沒有任何文件的聲明式JSON格式,或者它只是我的Google-Fu失敗了嗎? :)

+0

得到了同樣的問題。未調用'beginRequestWithExtensionContext'。 順便提一句,'blockerList.json'似乎JSON文件不能被擴展程序實時修改。那麼,有沒有辦法爲擴展/應用程序設置UI?要修改過濾器,您需要重新發布擴展? – Wayne

+2

@ chris-jones指出這是['reloadContentBlocker ...'](https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS90APIDiffs/frameworks/SafariServices.html)指出的意在強制從您的主機應用程序重新加載。 –

+0

謝謝,會嘗試。 – Wayne

回答

5

你怎麼知道擴展沒有被調用?

我構建了一個非常快速的測試應用程序,並從beginRequestWithExtensionContext方法中做了一個簡單的NSLog(),並且在擴展功能打開時它被調用。

此外,fwiw,有+[SFContentBlockerManager reloadContentBlockerWithIdentifier:completionHandler:],它可以讓你從主應用程序,隨意觸發更新。

+1

沒有記錄,沒有斷點擊中我。看到你的帖子,我甚至無意中嘗試在ObjC而不是Swift中製作一款新應用。該擴展名正在播放負鼠。你能否在某處發佈你的主機應用程序回購? –

+0

對於慢速回復的道歉:https://github.com/cmsj/iOS9ContentExtensionTest - 「BLOCK ALL THE THINGS」文件夾是擴展名,「Blocker」是iOS應用程序。它幾乎爲零功能:) –

+0

我分叉你的回購,建立它,並且不* WFM :('reloadContentBlockerWithIdentifier'甚至沒有在XCode7b3中調用完成處理程序,並在最新的XCode7b5中用'ContentBlockerErrorDomain Code = 3'調用它。阻塞擴展甚至沒有實例化,執行的'beginRequestWithExtensionContext'越少,你能否檢查它?確實,我沒有'reloadContentBlockerWithIdentifier'調用,但如果你使用舊的XCode7 beta測試,它可能會被破壞對於你現在如果沒有...我會嚇壞了 –

2

目前還沒有任何文檔,但是我發現url中的一些字符阻止了JSON的加載 他們是(我發現的那個,可能更多):+(作爲前綴),$ ,|,^

+0

所以本質上,沒有正則表達式(尚未)在新聞稿 –

1

使用設備控制檯來查看設備的實時日誌。你會看到你的NSLog()調用。

  1. 從Xcode菜單中選擇窗口 - >設備。
  2. 選擇左欄中的設備。
  3. 單擊右側面板左下方的向上三角形顯示設備控制檯。