2012-03-09 11 views
35

ऐसा लगता है कि आईओएस 5.1 ने एक उपयोगकर्ता को प्राथमिकता के लिए नेविगेट करने के लिए मानक यूआरएल एन्कोडिंग तोड़ दी है।आईओएस 5.1 के साथ वरीयताओं/सेटिंग्स कैसे खोलें?

उदाहरण के लिए: आईओएस 5.0 में

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; 

वर्क्स नहीं बल्कि iOS 5.1 (दोनों डिवाइस और सिम्युलेटर) में।

क्या किसी को आईओएस 5.1 में इस कार्यक्षमता को दोहराने का कोई तरीका मिला है?

+0

वाह, एप्पल है कि एक दूर करने के लिए जल्दी थी ... आप की Info.plist हो रही कोशिश की है सेटिंग्स ऐप और जांच कर रहे हैं कि कोई पंजीकृत यूआरएल योजनाएं हैं या नहीं? – fbernardo

+1

मैंने Preferences.plist खोल दिया। ऐसा लगता है कि उन्होंने kPreferencePositionKey के लिए मान हटा दिया (जो prefs: ...) था। मुझे कई नई कुंजी दिखाई देती हैं (WebDatabaseDirectory, WebKitLocalStoreDatabasePathPreferenceKey, AutomaticMinimizationEnabled, और UserDictionarySampleShortcutsAdded)। उनमें से कुछ दिलचस्प लग रहा है, अब मजेदार हिस्सा कहां से शुरू करना है। –

+0

स्वचालितमैनीकरण वास्तव में मजेदार लगता है ... – fbernardo

उत्तर

11

नहीं, मुझे इस कार्यक्षमता को दोहराने का कोई तरीका नहीं पता है।

लेकिन आप क्या कर सकते हैं एक रडार बहाली का अनुरोध कर रहा है। Here is a radar अनुरोध है कि योजनाओं को पहली जगह में दस्तावेज किया जाए।

David Barnard ने पुष्टि की है कि आईओएस 5.1 सेटिंग्स ऐप्स यूआरएल योजनाओं को तोड़ देता है।


अद्यतन: iOS 8 has similar functionality अपनी एप्लिकेशन सेटिंग खोलने के लिए। धन्यवाद ऐप्पल, Mike और Soto_iGhost

निरंतर UIApplicationOpenSettingsURLString (UIApplication Documentation) आपके ऐप के लिए सेटिंग्स खोल देगा और नहीं, ट्विटर की सेटिंग्स कहें। बिल्कुल वही कार्यक्षमता नहीं है लेकिन पहले और अब आधिकारिक तौर पर मान्यता प्राप्त है।

यह अब अतिरिक्त उपयोगी होना चाहिए कि प्रत्येक ऐप में गोपनीयता, सेलुलर डेटा, पृष्ठभूमि ऐप रीफ्रेश और अधिसूचनाओं का उपयोग करने के लिए सेटिंग्स में एक स्थान है।

+0

उत्तर के लिए धन्यवाद। यह एक बड़ा बमर है, यह सुनिश्चित नहीं है कि ऐप्पल को इस कार्यक्षमता को हटाने की आवश्यकता क्यों महसूस हुई। –

+1

ये वास्तव में अच्छी खबर नहीं हैं। हमने एंटरप्राइज़ ऐप के भीतर क्लाइंट के लिए भी इसका इस्तेमाल किया। – axooh

+0

बटन अभी भी काम करता है अगर बटन अलर्ट में है, लेकिन UI – zambono

1

यदि आप ट्विटर के ढांचे (ट्विटर ट्विटर नियंत्रक) में देखते हैं, तो इसमें "prefs: root = TWITTER" है, 5.1 में यह लाइन भी है। तो शायद ऐप्पल ने इसे अन्य ऐप्स के लिए अक्षम करने के लिए कुछ बनाया, जैसे प्लेस्ट या विधि "openURL" में कुछ विशेष कुंजी किसी भी तरह से जांचती है कि यह सिस्टम ऐप नहीं है।

3

आप यह कर सकते हैं।

TWTweetComposeViewController *ctrl = [[TWTweetComposeViewController alloc] init]; 
        if ([ctrl respondsToSelector:@selector(alertView:clickedButtonAtIndex:)]) { 
         // Manually invoke the alert view button handler 
         [(id <UIAlertViewDelegate>)ctrl alertView:nil 
              clickedButtonAtIndex:0]; 
        } 
+0

अच्छा काम :) लेकिन यह लॉग इन करने के बाद ऐप पर वापस नहीं आ रहा है- ट्विटर खाते में भी अलर्ट अभी भी है :( – Zubair

+0

क्या आप अपना कोड यहां डाल सकते हैं? – Saad

+0

कृपया देखें लिंक http://facebook.stackoverflow.com/प्रश्न/14 9 50678/कॉलिंग-यूअलर्टव्यू-क्लिकेडबटन-ए-इंडेक्स-प्रोग्रामेटिक रूप से – Zubair

13

यह थोड़ा मुश्किल है, मैं *TWTWeetComposeViewController* में subviews को हटाने के द्वारा मिलता है, तो यह केवल चेतावनी है जब उपयोगकर्ता में और बटन की स्थापना पर क्लिक करके loged नहीं है, हम मेरे एप्लिकेशन में सेटिंग पेज खोल सकते हैं दर्शाता है।

 + (void)setAlertForSettingPage :(id)delegate 
    { 
    // Set up the built-in twitter composition view controller. 
     TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init]; 


     // Create the completion handler block. 
     [tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) { 
      [delegate dismissModalViewControllerAnimated:YES]; 
     }]; 

     // Present the tweet composition view controller modally. 
     [delegate presentModalViewController:tweetViewController animated:YES]; 
     //tweetViewController.view.hidden = YES; 
     for (UIView *view in tweetViewController.view.subviews){ 
      [view removeFromSuperview]; 
     } 

    } 

यहाँ, प्रतिनिधि आप अपने ViewController अंदर इस पद्धति का उपयोग कर रहे हैं तो सिर्फ self बजाय delegate उपयोग करते हैं, अपने ViewController है।

संपादित करें: आप किसी भी पदावनत त्रुटियों मिलता है, निम्नलिखित iOS6 संगत बजाय कोड का उपयोग करें:

- (void)setAlertForSettingPage 
{ 
    // Set up the built-in twitter composition view controller. 
    SLComposeViewController *tweetViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

    // Present the tweet composition view controller modally. 
    [self presentViewController:tweetViewController animated:YES completion:nil]; 
    for (UIView *view in tweetViewController.view.subviews){ 
     [view removeFromSuperview]; 
    } 
} 
+0

यह एकमात्र कामकाजी समाधान है जो मैंने पाया है! धन्यवाद! –

+0

@EduardoCobuci क्या आप पृष्ठभूमि में ट्वीट बॉक्स को हटाने में सक्षम थे? मैं सेटिंग्स देखता हूं/अलर्ट रद्द करें लेकिन पीछे एक ट्वीट बॉक्स है, हम इसे कैसे हटा सकते हैं? – Jatin

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