2010-11-13 10 views
7

मेरे आईओएस 4 एप्लिकेशन में, मुझे उपयोगकर्ता से निर्दिष्ट समय पर पृष्ठभूमि से एक यूआरएल खोलने की जरूरत है। हालांकि, किसी कारण से, मैं कुछ कारणों से पृष्ठभूमि से एक यूआरएल लॉन्च नहीं कर सकता। यूआरएल खोलने के लिए मेरा कोड यहां दिया गया है:UIAplplication openURL पृष्ठभूमि

if (![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]]) 
{ 
    // the URL wasn't opened. we will ignore this for now. 
} 

वह कोड पहले बनाया गया डेमॉन थ्रेड से लॉन्च किया जा रहा है। मैंने सिम्युलेटर पर इस कोड का परीक्षण किया है, और यूआरएल खोला नहीं गया है, और विधि किसी कारण से YES लौटाती है, लेकिन जब मैं अपना एप्लिकेशन फिर से खोलता हूं (फास्ट ऐप-स्विचिंग के माध्यम से) यह यूआरएल खोलता है। क्या कोई तरीका है कि मैं इस बिंदु पर फिर से अपना आवेदन अग्रभूमि में आ सकता हूं (स्थानीय अधिसूचना के माध्यम से नहीं) ताकि यूआरएल खुल सके, या यह एक बग या अनियंत्रित सुविधा है। इसके अलावा, अगर यूआरएल खोलने का दूसरा तरीका है, तो यह पृष्ठभूमि में काम करेगा, यह भी सहायक होगा।

उत्तर

5

मेरा मानना ​​है कि मुझे यह मिला है (सिम्युलेटर पर काम नहीं करता है, क्योंकि यह मैक पर टर्मिनल पर कमांड पास करता है, क्योंकि सिम्युलेटर के लिए कोई कमांड लाइन नहीं है)।इस का उपयोग करें:

system([[NSString stringWithFormat:@"uiopen \"%@\"", myUrlToOpen] UTF8String]); 

कि आदेश uiopen (भागने के माध्यम से पाया जाता है) डिवाइस के लिए पारित करेंगे, यह उस URL खोलने के लिए मजबूर कर दिया। मुझे आशा है कि इससे दूसरों को मेरी स्थिति में मदद मिलेगी।

+0

तो मुझे इसे बनाने के लिए अपने डिवाइस को जेलबैक करना है? – adruzh

+1

@adruzh हाँ आप करते हैं, वह आदेश एक अनजान डिवाइस पर काम नहीं करता है :( –

+0

यह पूरी तरह से जेलब्रोकन डिवाइस में काम कर रहा है। –

3

यह आईओएस द्वारा समर्थित नहीं है। the relevant section of Apple's iOS Programming Guide प्रति:

पृष्ठभूमि के कुछ प्रकार के निष्पादन उन्हें का उपयोग करता है [के माध्यम से] एक सरणी है जो निम्न मूल्यों के साथ एक या अधिक तार शामिल आवेदन द्वारा अग्रिम में घोषित किया जाना चाहिए के लिए समर्थन:

  • ऑडियो - एप्लिकेशन पृष्ठभूमि में उपयोगकर्ता को श्रव्य सामग्री बजाता है।
  • स्थान - एप्लिकेशन पृष्ठभूमि में चलते समय उपयोगकर्ताओं को उनके स्थान के बारे में सूचित करता है, यहां तक ​​कि भी।
  • वीओआईपी - एप्लिकेशन उपयोगकर्ता को इंटरनेट कनेक्शन का उपयोग कर कॉल करने की क्षमता प्रदान करता है।

...

पूर्ववर्ती कुंजी के अलावा, आईओएस दो अन्य तरीकों पृष्ठभूमि में काम करने के लिए प्रदान करता है: अतिरिक्त समय पूरा करने के लिए के लिए

  • आवेदन प्रणाली पूछ सकते हैं एक दिया कार्य
  • एप्लिकेशन स्थानीय सूचनाओं को पूर्व निर्धारित समय पर वितरित करने के लिए शेड्यूल कर सकते हैं।

आपके उपयोग मल्टीटास्किंग की अनुमति प्रकारों में से किसी को पूरा नहीं करता।

4

UIKit कॉल केवल मुख्य धागे पर चल सकते हैं। मुझे लगता है कि क्योंकि यह पृष्ठभूमि धागे पर चल रहा है, सफारी अभी भी यूआरएल, पर जाता है लेकिन आपका ऐप अभी भी सक्रिय है। जल्द ही सफारी खोलने का प्रयास करें और देखें कि क्या यह यूआरएल लोड करता है या नहीं।

समाधान इसे मुख्य धागे पर रखना होगा, और इस प्रकार कोड को चलाने के समय आपके ऐप को छोड़ दें। यह ऐसा नहीं लगता है कि आप इसे क्या करना चाहते हैं, क्षमा करें। यदि आप से के भीतर यूआरएल पर जाना चाहते हैं तो आप अपना यूआई वेबवेव प्रस्तुत कर सकते हैं।

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