2012-03-26 14 views
5

मैं UIWebView के बारे में बात नहीं कर रहा हूं, मैं NSURLRequest का उपयोग कर मोबाइल सफारी ऐप खोलना चाहता हूं।आईओएस: क्या सफारी में सीधे NSURLRequest खोलना संभव है?

क्यों? मेरे ऐप में, उपयोगकर्ता पहले से ही हमारे वेब सर्वर में लॉग इन कर चुका है। मैं उपयोगकर्ता को अपने क्रेडेंशियल्स को पुन: दर्ज किए बिना वेबपृष्ठ लॉन्च करने का विकल्प देना चाहता हूं। हालांकि, मैं GET का उपयोग नहीं कर सकता क्योंकि इससे यूआरएल में उनके क्रेडेंशियल्स लगाए जाएंगे।

तो, मैं एक NSURLRequest या किसी अन्य रूप में एक POST के साथ अपने app से सफारी एप्लिकेशन (एक UIWebView) खोल सकता है?

+2

आप किस प्रकार का सत्र प्रबंधन उपयोग कर रहे हैं? और, उस मामले के लिए, उपयोगकर्ता को क्रेडेंशियल सीमाओं में फिर से प्रमाणित करने के लिए महंगा क्यों है? – MrGomez

+0

मैंने कभी नहीं कहा कि यह महंगा था, लेकिन मुख्य कारण यह है कि यही हमारा ग्राहक चाहता है। सत्र प्रबंधन के लिए, webservice एमवीसी 3 .NET, और मेरा मानना ​​है कि यह सिर्फ एक कुकी है (जिसे हम पासवर्ड के समान कारणों से यूआरएल पर नहीं भेजना चाहते हैं)। – mtmurdock

+0

मैं देखता हूं। आखिरकार, इसे सुरक्षित रखने के लिए आपको तार पर एक प्रमाण पत्र का कुछ रूप भेजना होगा। यदि आप HTTPS के लिए उपलब्ध करा रहे हैं और सफारी को सही ढंग से सत्यापित करने की अनुमति देते हैं, तो मैं आपके क्लाइंट द्वारा तार पर भेजे गए सत्र पहचानकर्ता या प्रमाणीकरण कूपन की कुछ धारणा की अनुशंसा करता हूं। क्या यह पर्याप्त नहीं होगा? – MrGomez

उत्तर

10

मैं अपनी गर्दन रेखा पर रखूंगा और कहूंगा नहीं - NSURLRequest सीधे सफारी को पास करने का कोई तरीका नहीं है। आईओएस पर (प्राथमिक) अंतर-अनुप्रयोग संचार माध्यम यूआरएल तक पहुंचना है; एक आवेदन से दूसरे एप्लिकेशन में वस्तुओं को पारित करने के लिए कोई सामान्य तंत्र नहीं है।

मुझे लगता है कि आप सबसे अच्छा करने के लिए सक्षम हैं, एप में अपने वेब सर्वर से one-time key लाने के लिए, फिर यूआरएल में सफारी में पॉप करें। और, यदि आप कर सकते हैं, तो HTTPS के माध्यम से ऐसा करें ताकि URL पथ और क्वेरी घटक केवल तभी दिखाई दे जब टीएलएस वार्ता सफल हो जाए। इससे किसी और को प्रासंगिक क्रेडेंशियल देखने से रोकना चाहिए और उन्हें किसी अन्य माध्यम से प्राप्त किए जाने पर भी रोकना चाहिए (जैसे आपकी अगली कोई व्यक्ति आपकी स्क्रीन से यूआरएल की प्रतिलिपि बना रही है)।

+0

यह एक दिलचस्प समाधान है। मुझे यकीन नहीं है कि क्या मैं एक https कनेक्शन guarente कर सकते हैं, लेकिन अगर मैं काम कर सकता हूं। – mtmurdock

+0

मैं इस उत्तर पर तटस्थ हूं। मैं इसे ऊपर उठाना चाहता हूं, लेकिन यह बहुत दिलचस्प जानकारी छोड़ देता है, [एक मजबूत एक बार कुंजी कैसे उत्पन्न करें] (https://en.wikipedia.org/wiki/One-time_pad) और तकनीकी विवरण एचटीटीपीएस बातचीत जो पथ के आकार के प्रमाण-पत्रों की गारंटी देती है, वे दुनिया में लीक नहीं होती हैं। अन्यथा, मैं सहमत हूं। :) – MrGomez

+0

@MrGomez यह विस्तार से बाहर निकलता है क्योंकि विस्तार का मेरा ज्ञान काफी कमजोर है। मैंने उत्तर को समुदाय विकी के रूप में चिह्नित किया है, इसलिए उम्मीद है कि कोई अच्छा उन बिट्स को भरने में सक्षम होगा? – Tommy

0

उस मामले के लिए एनएसआरएल, या सिर्फ एक एनएसएसटींग, या सिर्फ एक char * का उपयोग करना आसान होगा। मुझे यकीन नहीं है कि यह आईफोन पर काम करता है, तो यह चाहिए, क्योंकि आईफोन ओएसएक्स की तरह डार्विन के साथ समानांतर चलता है, लेकिन आईफोन पर कुछ प्रतिबंध हैं। हालांकि यह निश्चित रूप से मैक पर काम करता है।

NSString *url = @"http://www.apple.com"; 
    NSURL *myURL = [NSURL URLWithString:url]; 
    system([ [NSString 
       stringWithFormat:@"Open -a Safari %@", 
       [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:NULL] ] 
      cStringUsingEncoding:NSUTF8StringEncoding]); 

इसके अलावा, मैं सुझाव दे सकता हूं कि यह एक बुरा विचार है (यदि इसे टाला जा सकता है)। एक आईफोन उपयोगकर्ता के रूप में, मुझे यकीन है कि मैं इसे बहुत परेशान करने में अकेला नहीं हूं जब डेवलपर्स मुझे उस ऐप से दूर ले जाता है जिसमें मैं वर्तमान में हूं।

+0

अपने प्रश्न को दोबारा पढ़ना, मुझे लगता है कि मैंने इसे गलत समझा होगा। बेकार जवाब के लिए खेद है। – anthropomorphic

+1

किसी iPhone पर आप '[[UIAplplication sharedAplication] openURL: myURL] का उपयोग करने के बजाय सिस्टम कॉल खोलने के बजाय उपयोग करेंगे। आपको अंतर्निहित कार्यक्षमता को डुप्लिकेट करने वाले तृतीय पक्षों पर ऐप्पल के नियमों के अनुसार सफारी मिल जाएगी, इसलिए मूल रूप से यह 'ओएस एक्स पर' [[NSWorkspace SharedWorkspace] openURL: myURL] 'जैसा ही है, सिवाय इसके कि आप विश्वास कर सकते हैं कि आपको सफारी मिल जाएगी, मूल पोस्टर निर्धारित के रूप में। – Tommy

+0

जानना अच्छा है, धन्यवाद। मैं इस साइट पर नया हूं, मुझे आश्चर्य है कि मुझे इस पोस्ट को हटाना चाहिए या छोड़ना है? – anthropomorphic

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