2013-10-10 16 views
6

पर सफारी में खुला लिंक मैं कॉर्डोवा 3.1 के साथ एक आईओएस ऐप बना रहा हूं। मेरे पास एक लिंक है जिसे मैं सफारी में खोलना चाहता हूं। मैंने org.apache.cordova.inappbrowser प्लगइन स्थापित किया है और यह मेरे आईफोन (आईओएस 7) और सिम्युलेटर (आईओएस 5; आईओएस 6.1; आईओएस 7) पर अच्छा काम करता है, लेकिन अगर मैं सभी उपकरणों पर (आईओएस 6) कोशिश करता हूं तो यह ' टी काम नहींकॉर्डोवा 3.1 आईओएस 6

क्या कोई यह जानता है कि इसे कैसे ठीक किया जाए या आईओएस 6 चलाने वाले वास्तविक डिवाइस पर इसे आजमाया जाए?

window.open('http://www.google.nl', '_system'); 
+0

क्या आप पहले से ही [इस] (http://stackoverflow.com/questions/17887348/phonegap-open-link-in-browser) पर एक नज़र डालें? –

+0

हां, मैंने Google पर मिलने वाली सभी विधियों का प्रयास किया। – Hugo

उत्तर

3

अच्छी तरह से मैं देशी पक्ष (वस्तुनिष्ठ सी)

के माध्यम से इस को क्रियान्वित किया है 'MainViewController.m'

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    NSString *str = url.absoluteString; 
    NSRange range = [str rangeOfString:@"http://"]; 
    NSRange range1 = [str rangeOfString:@"https://"]; 

    if (range.location != NSNotFound || range1.location != NSNotFound) { 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
    else { 
     return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ]; 
    } 
} 
में इस विधि जोड़ें: मैं लिंक को खोलने के लिए इस कोड का उपयोग कर रहा

यह आईओएस 6 & आईओएस 7 दोनों के लिए 'http' और 'https' लिंक दोनों की परवाह करता है, और डिवाइस के डिफ़ॉल्ट ब्राउज़र में लिंक खोलता है।

0

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे इसका सामना करना पड़ा है और इसके साथ मदद करने के लिए बस एक छोटी प्लगइन लिखी है। सिद्धार्थ का जवाब लगभग सही है, लेकिन जब मैंने इसका इस्तेमाल किया, तो उसने मेरे index.html के सभी वेब अनुरोधों को रोक दिया, और ऐसा लगता है कि मेरा ऐप सफारी में स्थानांतरित हो रहा था। मुझे केवल स्पष्ट अनुरोधों को संभालने का एक तरीका था, इसलिए मैं सफारी में विशिष्ट (बाहरी) यूआरएल खोल सकता था।

फोनगैप के बारे में कई समान प्रश्न हैं, जो window.open के लिए _system के साथ विशेष हैंडलिंग एम्बेड करने लगते हैं। यह अच्छा होगा, लेकिन कॉर्डोवा में यह कार्यक्षमता नहीं है।

अंत में, मैंने small plugin लिखा है जो पर्याप्त उद्देश्य सी (सिद्धार्थ के उत्तर पर बारीकी से मॉडलिंग) एम्बेड करता है लेकिन प्लगइन के जादू के कारण, इसे का उपयोग करके मांग पर निष्पादित किया जा सकता है। मैं इसे फोनगैप के समान कार्यक्षमता प्राप्त करने के लिए window.open में पैच करने के लिए प्यार करता हूं, लेकिन यह एक और दिन के लिए होगा, और यह वास्तव में इस उत्तर को प्रभावित नहीं करता है।

जहां तक ​​मैं कह सकता हूं, आधुनिक कॉर्डोवा में, यह एकमात्र व्यवहार्य रणनीति है।