2016-12-08 7 views
7

मैं Apple’s guide for creating a Safari App Extension का अनुसरण कर रहा हूं। संक्षेप में, मैं कर दिया है:एक्सकोड में कंसोल में मेरे सफारी ऐप एक्सटेंशन एनएसएलओजी संदेश क्यों नहीं दिख रहे हैं?

  • एक नया Xcode प्रोजेक्ट बनाया गया (Xcode 8.1 में, MacOS 10.12 सिएरा पर) कोको आवेदन टेम्पलेट का उपयोग कर
  • अनुप्रयोग में एक नया लक्ष्य सफारी एक्सटेंशन टेम्पलेट
  • का उपयोग कर बनाया
  • एक बार एप्लिकेशन चलाएं, सुनिश्चित करें कि सफारी एप्लिकेशन एक्सटेंशन
  • सफारी का विकास करना मेनू
  • में "अनुमति दें अहस्ताक्षरित एक्सटेंशन" विकल्प चयनित बनाया गया है सफारी के एक्सटेंशन वरीयता फलक में विस्तार सक्षम बनाने के लिए

सफारी में एक्सटेंशन का टूलबार बटन दिखाई देता है। ऐप्पल की मार्गदर्शिका का कहना है कि जब मैं टूलबार बटन पर क्लिक करता हूं तो मुझे कंसोल में NSLog संदेश देखना चाहिए, लेकिन मुझे कुछ भी दिखाई नहीं दे रहा है।

मैं स्क्रिप्ट विस्तार के द्वारा इंजेक्शन के लिए एक संदेश भेजने के लिए SafariExtensionHandler.swift संपादित किया है:

override func toolbarItemClicked(in window: SFSafariWindow) { 
    // This method will be called when your toolbar item is clicked. 
    NSLog("The extension's toolbar item was clicked") 

    window.getActiveTab(completionHandler: { (activeTab) in 
     activeTab?.getActivePage(completionHandler: { (activePage) in 
      activePage?.dispatchMessageToScript(withName: "toolbarItemClicked", userInfo: nil) 

     }) 
    }) 
} 

और मैं इंजेक्शन लिपि (script.js) संपादित किया है कि संदेश को सचेत करने के:

safari.self.addEventListener("message", function (event) { 
    alert("We got a message from the extension! - " + event.name + ": " + event.message); 
}); 

चेतावनी तब दिखाई देती है जब मैं टूलबार बटन पर क्लिक करता हूं (जब मैं webkit.org पर एक पृष्ठ पर हूं, जैसा कि मैंने डिफ़ॉल्ट SFSafariWebsiteAccess सेटिंग्स में छोड़ा है), इसलिए एक्सटेंशन काम कर रहा है और क्लिक को पंजीकृत कर रहा है। लेकिन मुझे एक्सकोड के कंसोल, या कंसोल ऐप में एनएसएलॉग नहीं दिख रहा है।

मैं असली एक्सकोड नौसिखिया हूं, इसलिए मुझे यकीन है कि मुझे कुछ याद आ रही है - लेकिन कंसोल में एनएसएलओजी संदेश क्यों नहीं दिख रहा है?

(यदि कोई फर्क पड़ता है तो मैं व्यवस्थापक के रूप में नहीं चलता हूं - हालांकि जब भी पहली बार एक्सकोड चलाने के दौरान मुझसे पूछा गया था तो मैंने व्यवस्थापक खाता विवरण दर्ज किया था। मुझे लगता है कि कंसोल ऐप में , जब मैं system.log का चयन करता हूं, तो मुझे "फ़ाइल पढ़ने में असमर्थ" कहने वाला एक संदेश दिखाई देता है। यह might be related to not running as an administrator।)

उत्तर

5

अपने एक्सटेंशन के लिए योजना पर स्विच करें (योजनाएं केवल रन और स्टॉप बटन के दाईं ओर हैं), और फिर रन हिट करें।

एक पॉपअप आपको चलाने के लिए एक ऐप चुनने के लिए कहेंगे: सफारी का चयन करें।

सफारी का एक नया उदाहरण खोलना चाहिए और आप एक्सकोड कंसोल में लॉग आउटपुट देखना शुरू कर देंगे।

हालांकि, अपने एप्लिकेशन और एक्सटेंशन साइन नहीं किया है, सफारी अपने विस्तार को अस्वीकार कर देंगे और सांत्वना की तरह

2017-04-12 13:00:44.799843-0400 Safari[37188:2787364] [Extensions] 
Computing the code signing dictionary failed for extension with 
identifier com.your.app.extension 
2017-04-12 13:00:44.799865-0400 Safari[37188:2787364] [Extensions] 
Disabling and blocking extension with identifier: 
com.your.app.extension 

इस मामले में संदेश आप बस की फिर से जांच "अनुमति दें अहस्ताक्षरित एक्सटेंशन की जरूरत दिखाएगा "सफारी के डेवलपर मेनू में और वरीयता फलक में एक्सटेंशन सक्षम करें, जिसके बाद आपको जाने के लिए अच्छा होना चाहिए।

+0

धन्यवाद मैंने आपके जवाब को देखने से पहले काफी समय लगाया :) – Simcha

+0

क्या ऐप चलाने के लिए हमेशा सफारी का चयन करने का कोई तरीका है? – ZedTuX

संबंधित मुद्दे