2015-06-10 13 views
6

मैं चमकदार नए "Content Blocker Extension" का परीक्षण करने की कोशिश कर एक्सकोड 7 बीटा के साथ खेल रहा हूं। उदाहरण वर्ग उसी NSExtensionRequestHandling प्रोटोकॉल को (पहले से ज्ञात) साझाकरण एक्सटेंशन के रूप में अपना रहा है। शेयरिंग एक्सटेंशन से आवश्यक अंतर यह है कि कक्षा एक सादा NSObject है, *ViewController सबक्लास नहीं है क्योंकि, आप जानते हैं कि एक अवरोधक एक्सटेंशन किसी UI प्रतिक्रिया को प्रदर्शित नहीं करना चाहिए। यह मेरी समझ कम से कम है। वैसे भी महत्वपूर्ण विधि beginRequestWithExtensionContext जो ब्लॉकर घोषणा जेएसओएन को विस्तार बिंदु पर फ़ीड करने के लिए माना जाता है, उसे लागू नहीं किया जाता है। एक्सटेंशन में TRUEPREDICATE है NSExtensionActivationRule और सफारी नई सफारी कॉन्फ़िगरेशन "सामग्री अवरोधक" में मेरे होस्ट ऐप के अस्तित्व को स्वीकार करता है। लेकिन अभी भी कोई सिगार नहीं है।आईओएस 9 सफारी सामग्री अवरोधक एक्सटेंशन

क्या किसी को पता है कि यह बीटा में पहले से ही काम कर रहा है या यह सिर्फ एक प्रेस विज्ञप्ति थी?

और, ओह, जब हम इसमें हैं, तो क्या किसी भी उस घोषणात्मक JSON प्रारूप का दस्तावेज़ीकरण है या यह सिर्फ मेरा Google-Fu मुझे विफल कर रहा है? :)

+0

एक ही समस्या हो गई। 'startRequestWithExtensionContext' नहीं कहा जाता है। बीटीडब्ल्यू, 'blockerList.json' ऐसा लगता है कि JSON फ़ाइल को फ्लाई पर एक्सटेंशन द्वारा संशोधित नहीं किया जा सकता है। तो, एक्सटेंशन/ऐप के लिए सेटिंग्स UI बनाने का कोई तरीका नहीं है? फ़िल्टर को संशोधित करने के लिए आपको एक्सटेंशन को पुन: प्रकाशित करने की आवश्यकता है? – Wayne

+2

यह ['reloadContentBlocker ... '] है (https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS90APIDiffs/frameworks/SafariServices.html) जो @ क्रिस-जोन्स ने बताया आपके मेजबान ऐप से पुनः लोड करने के लिए मजबूर होना था। –

+0

धन्यवाद, कोशिश करें। – Wayne

उत्तर

5

आप कैसे जानते हैं कि एक्सटेंशन को शामिल नहीं किया जा रहा है?

मैंने एक बहुत ही त्वरित परीक्षण ऐप बनाया और beginRequestWithExtensionContext विधि से NSLog() को सरल बनाया और एक्सटेंशन को चालू करने पर इसे कॉल किया जा रहा था।

इसके अलावा, fwiw, +[SFContentBlockerManager reloadContentBlockerWithIdentifier:completionHandler:] है जो आपको इच्छा पर मुख्य ऐप से अपडेट ट्रिगर करने देता है।

+1

कोई लॉग नहीं, मेरे लिए कोई ब्रेकपॉइंट हिट नहीं है। अपनी पोस्ट देखकर, मैंने मूर्खतापूर्वक स्विफ्ट के बजाय ओबीजेसी में एक नया ऐप बनाने की कोशिश की। विस्तार संभव खेल रहा है। क्या आप कहीं भी अपना होस्ट ऐप रेपो प्रकाशित कर सकते हैं? –

+0

धीमी उत्तर के लिए माफ़ी: https://github.com/cmsj/iOS9ContentExtensionTest - "सभी चीजें ब्लॉक करें" फ़ोल्डर एक्सटेंशन है, और "अवरोधक" आईओएस ऐप है। इसमें लगभग शून्य विशेषताएं हैं :) –

+0

मैंने आपके रेपो को फोर्क किया है, इसे बनाया है और * नहीं * डब्लूएफएम :('रीलोडकंटेंटब्लॉकर विथ इंडेंटिफायर' ने एक्सकोड 7 बी 3 में पूरा करने वाले हैंडलर को भी कॉल नहीं किया है, और इसे नवीनतम XCode7b5 में 'ContentBlockerErrorDomain Code = 3'' के साथ कॉल किया है अवरोधक एक्सटेंशन को भी तत्काल नहीं किया गया है, कम निष्पादित 'startRequestWithExtensionContext'। क्या आप इसे जांच सकते हैं? यह सच है कि मेरे पास' reloadContentBlockerWithIdentifier' कॉल नहीं था लेकिन यदि आप पुराने XCode7 बीटा के साथ परीक्षण कर रहे थे, तो यह टूटा जा सकता है तुम्हारे लिए भी अब। अगर नहीं ... मैं बाहर निकलने जा रहा हूं। –

2

अभी तक कोई दस्तावेज नहीं है, लेकिन मुझे पता चला है कि यूआरएल में कुछ वर्ण JSON के भार को रोकते हैं (वे मुझे मिले हैं, अधिक हो सकता है): + (उपसर्ग के रूप में), $ , |,^

+0

तो अनिवार्य, प्रेस विज्ञप्ति में प्रस्तुत किए गए कोई regexes (अभी तक) –

2

है वहाँ कि कथात्मक JSON प्रारूप

नीचे webkit.org ब्लॉग पोस्ट वर्तमान सबसे अच्छा "आधिकारिक" सामग्री अवरोधक JSON प्रारूप के प्रलेखन प्रतीत हो रहा है की किसी भी प्रलेखन।

https://www.webkit.org/blog/3476/content-blockers-first-look/

+1

आधा साल बाद, यह अभी भी एकमात्र दस्तावेज उपलब्ध प्रतीत होता है। मुझे अब इसके बारे में पता है, लेकिन यह मेरे प्रश्न के 2 दिन बाद पोस्ट किया गया था :) –

1

उपयोग डिवाइस कंसोल डिवाइस का एक लाइव लॉग देखने के लिए। वहां आप अपने एनएसएलओजी() कॉल देखेंगे।

  1. विंडो चुनें -> एक्सकोड मेनू से डिवाइस।
  2. बाएं कॉलम में डिवाइस चुनें।
  3. डिवाइस कंसोल दिखाने के लिए दाहिने हाथ पैनल के निचले बाएं हिस्से में अप-त्रिकोण पर क्लिक करें।
संबंधित मुद्दे