2015-10-08 7 views
7

मेरी समस्या यह है कि मुझे पता नहीं चल सकता कि आईओएस विजेट से कोई निश्चित यूआरएल खोला जा सकता है या नहीं। विधि canOpenURL: आज के विजेट पर उपलब्ध नहीं है क्योंकि UIApplication कक्षा नहीं है।जांचें कि क्या आज आईओएस से यूआरएल खोला जा सकता है विजेट

इसके अलावा विधि openURL: बूलियन "सफलता" के लिए हाँ NSExtensionContext रिटर्न, यहां तक ​​कि एक अमान्य URL के साथ की।

नीचे दिया गया कोड अन्य शर्त में प्रवेश करता है (सफलता बूल हमेशा हाँ है) लेकिन साथ ही सिम्युलेटर एक पॉपअप त्रुटि दिखाता है, जैसा कि आप संलग्न छवि में देख सकते हैं।

NSURL* invalidURL = [NSURL URLWithString:@"fake://blablabla"]; 
[self.extensionContext openURL:invalidURL completionHandler:^(BOOL success) { 
    if (success == NO) { 
     DDLogWarn(@"Can't open URL: %@", invalidURL); 
    } 
    else{ 
     DDLogInfo(@"Successfully opened URL: %@",invalidURL); 
    } 
}]; 

enter image description here

+0

आप एक असली डिवाइस पर इस की कोशिश की है की तरह कुछ द्वारा साझा UIApplication उदाहरण के लिए मिल सकता है? व्यवहार अलग हो सकता है। –

उत्तर

1

यह एक ज्ञात बग है। मैंने पिछले साल ऐप्पल के साथ इस मुद्दे को दायर किया था (तीसरा: // 18107612) जब आईओएस 8.0 बी 5 चालू था, और यह अभी भी एक खुला मुद्दा है।

http://bugreport.apple.com पर ऐप्पल के साथ अपनी खुद की बग फ़ाइल करें और सर्वश्रेष्ठ के लिए आशा करें।

+0

इसे इंगित करने के लिए धन्यवाद। क्या कोई व्यावहारिक कामकाज है? इसकी सराहना की जाएगी। –

+0

अच्छा नहीं है। सबसे अच्छा मैं सोच सकता हूं कि यूआरएल पर अपना मुख्य ऐप जांचना है और फिर यह इंगित करने के लिए उपयोगकर्ता डिफ़ॉल्ट में जानकारी सहेजना है कि यह काम करता है या नहीं। एक्सटेंशन इसे पढ़ सकता था। हालांकि यदि उपयोगकर्ता ऐप्स जोड़ता है या हटा देता है तो जानकारी वर्तमान नहीं हो सकती है। –

0

आप performSelector: का उपयोग कर,

UIApplication *sharedApplication = [[UIApplication class] performSelector:NSSelectorFromString(@"sharedApplication")];

+0

मुझे लगता है कि यह एक सार्वजनिक एपीआई नहीं है, इसलिए ऐप्पल कोड की इस पंक्ति का उपयोग करके किसी भी एप्लिकेशन को मना कर देगा, नहीं? – andreacipriani

+0

यह सच है, यदि आप विधि हस्ताक्षर को खराब करते हैं तो आप –

+0

को खराब कर सकते हैं और यह सुनिश्चित करने के लिए 'एनएसडीएटी' चेक जोड़ सकते हैं कि कॉल केवल अपेक्षित ऐप समीक्षा दिनांक खत्म होने के बाद ही किया गया है .. लेकिन गंभीरता से, मुझे नहीं लगता कि आपको यह करना चाहिए। – Mazyod

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