2013-02-14 56 views
10

हम एक आईओएस ऐप सबमिट करने की कोशिश कर रहे हैं जो धर्मार्थ एसएमएस दान बनाता है। हमने बिना किसी मुद्दे के अतीत में इनमें से कई किया है; लेकिन ऐप्पल अब हमारे दृष्टिकोण को स्वीकार करने के लिए तैयार नहीं है और हमारे ऐप को खारिज कर दिया है।क्या आईओएस में संदेश ऐप लॉन्च करने का कोई और तरीका है? (दान के लिए)

उनका दावा यह है कि ऐप दिशानिर्देशों के बिंदु 21.2 का पालन नहीं करता है। कौन सा है:

21,2 दान के संग्रह सफारी में एक वेब साइट या एक एसएमएस

अतीत में के माध्यम से किया जाना चाहिए, और यह वर्तमान अनुप्रयोग में, हम में MFMessageComposeViewController उपयोग कर रहे हैं एसएमएस संदेश बनाने के लिए MessageUI ढांचा। हम इसका इस्तेमाल करते हैं क्योंकि; एक शोर्ट के लिए दान होने के नाते हमें संदेश में एक कीवर्ड लिखने में सक्षम होना चाहिए।

एक संकल्प केंद्र पर वापस और आगे की बिट (और एक अस्वीकृति विवाद) सबसे मैं हम क्या करना चाहिए रहे हैं के बारे में एप्पल से बाहर निकल सकते है के बाद:

भेजा जा रहा है एसएमएस संदेश ऐप के भीतर से ऐप स्टोर दिशानिर्देशों के अनुपालन में नहीं हो सकता है।

और

एसएमएस लिंक दान देने का संदेश प्रारंभ होना चाहिए।

हम sms:URL scheme एक निश्चित संख्या के लिए संदेश एप्लिकेशन को लॉन्च करने का उपयोग कर सकते हैं, लेकिन यह विधि हमें हमारे लिए आवश्यक कीवर्ड जोड़ने के लिए अनुमति नहीं है।


तो सवाल यह है: किसी को भी संदेश एप्लिकेशन को लॉन्च करने का एक और तरीका का पता है?

हमारा फ़ॉलबैक विकल्प स्वयं को एक एसएमएस संदेश बनाने के लिए छोड़ना है और एक चेतावनी है जो उपयोगकर्ता को "टेक्स्ट YYYY ZZZZ" बताती है जो कि एक बहुत ही खराब उपयोगकर्ता अनुभव है।


अद्यतन (5 वीं मार्च 2013):

हम अपने सूचना-केवल वापस आने के विकल्प के साथ फिर से एप्लिकेशन पुन: प्रस्तुत ... यह एक ही कारण के लिए फिर से अस्वीकार कर दिया था। हम फिर से ऐप्पल के साथ चुनाव लड़ रहे हैं।


अद्यतन (6 मार्च 2013):

के बाद एप्पल के लिए एक कठोर संदेश स्पष्ट समझा ... ऐप सबमिशन बीत चुका है।

मैं ने लिखा है:

हम सहमत नहीं है। ऐप में ऐप के भीतर धर्मार्थ दान एकत्र करने की क्षमता शामिल नहीं है। यह केवल उपयोगकर्ता को सूचित करता है कि वे दान कैसे कर सकते हैं।

तो; अगर आपको एक ही समस्या है तो मैं सुझाव देता हूं कि आपके ऐप को 'फिक्सिंग' करने से पहले पहले शिकायत करने का प्रयास करें।

उत्तर

18

हाँ और नहीं।

एक बुनियादी स्तर पर: सं। मैंने दस्तावेज़ों के माध्यम से एक नज़र डाली है और आप (उदास रूप से) संदेश संदेश को बाहरी रूप से कॉल करते समय आपके संदेश के लिए एक शरीर सेट नहीं कर सकते हैं।

आप केवल कर सकते हैं:

  1. ओपन संदेशों एप्लिकेशन

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]]; 
    
  2. इनपुट

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:+1234567890"]]; 
    

करने के लिए संदेश के लिए एक नंबर 10

अधिक जटिल: हाँ। शरीर के साथ एक एसएमएस भेजने के लिए विधि और कोड यहां दिया गया है। यह मॉड्यूल व्यू के रूप में संदेश ऐप की तरह एक दृश्य प्रस्तुत करता है। और संदर्भ you can read the docs here के लिए।

अपनी परियोजना के लिए
  1. आयात MessageUI फ्रेमवर्क

  2. देखने की ज करने के लिए इन जोड़ें कि कार्रवाई एक संदेश भेजने के पर है (मेरे मामले में एक सरल एक बटन के साथ देखें)।

    #import <MessageUI/MessageUI.h> 
    #import <MessageUI/MFMessageComposeViewController.h> 
    
  3. संदेश भेजने के लिए समान होना चाहिए महत्वपूर्ण कोड:

    -(IBAction)sendSMS:(id)sender { 
    
        if([MFMessageComposeViewController canSendText]) { 
         MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 
         controller.body = @"Hello"; 
         controller.recipients = [NSArray arrayWithObjects:@"+1234567890", nil]; 
         controller.messageComposeDelegate = self; 
         [self presentViewController:controller animated:YES completion:nil]; 
        } 
    } 
    

ऊपर कोड ग्रंथों नहीं भेज सकते हैं या के रूप में हम लागू नहीं किया है दृश्य को रद्द कर देगा messageComposeViewController:didFinishWithResult: विधि - इसके लिए दस्तावेज़ here पढ़ सकते हैं। या

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller 
       didFinishWithResult:(MessageComposeResult)result { 
    switch(result) { 
     case MessageComposeResultCancelled: 
      // user canceled sms 
      [self dismissViewControllerAnimated:YES completion:nil]; 
      break; 
     case MessageComposeResultSent: 
      // user sent sms 
      //perhaps put an alert here and dismiss the view on one of the alerts buttons 
      break; 
     case MessageComposeResultFailed: 
      // sms send failed 
      //perhaps put an alert here and dismiss the view when the alert is canceled 
      break; 
     default: 
      break; 
    } 
} 

प्रत्येक मामले में आप आप अलर्ट पेश कर सकते हैं कर सकते हैं, दृश्य को खारिज (मामले 1 के रूप में), कुछ भी अपने अनुप्रयोग की आवश्यकता है: यह निम्नलिखित की तरह दिखाई देगा।

मुझे यकीन है कि यह दूसरी विधि स्वीकृत होनी चाहिए या ऐप्पल को इसे अपने दस्तावेज़ से हटा देना चाहिए। हालांकि महत्वपूर्ण बात यह है कि canSendText अगर कथन है। यदि यह (या didFinishWithResult के लिए केस स्विच) लागू नहीं किया गया है तो ऐप्पल निश्चित रूप से ऐप को अस्वीकार कर देगा।

+0

हमने दूसरा मार्ग लिया है; जैसा कि आप वर्णन करते हैं लगभग बिल्कुल। वे अभी भी हमें असफल कर चुके हैं। एकमात्र चीज जो हम अलग-अलग करते हैं वह यह है कि हमारे पास फ़िनिशविथरसल्ट में स्विच-केस नहीं है - हम परिणाम के बावजूद नियंत्रक को खारिज करते हैं। – Wex

+0

आह, मैंने अभी आपकी स्थिति के बारे में बहुत कुछ पढ़ा है और मुझे लगता है कि उन चीजों में से एक ऐप्पल बदलने पर अनिच्छुक है।ऐप के अंदर एक नाटक खेत के लिए चीजें खरीदने के लिए ठीक लगता है - जहां वे अपना कटौती करते हैं - लेकिन दान के लिए दान नहीं करते हैं। मुझे लगता है कि विकल्पों का इंतजार करना है और अपने उपयोगकर्ताओं को वाक्यांश के शब्द में टाइप करने का निर्देश देना है (शायद आप आसानी से प्रक्रिया को आसान बनाने और अधिक उपयोगकर्ता के अनुकूल बनाने के लिए टेक्स्ट को क्लिपबोर्ड पर कॉपी कर सकते हैं)। – Patrick

+0

कष्टप्रद हिस्सा यह है कि हमने इसे दान ऐप्स के साथ कुछ बार पहले किया है। अब हमें अपने क्लाइंट को समझा देना है कि ऐप्पल के दिल में बदलाव आया है। क्लिपबोर्ड विचार अच्छा है; लेकिन इसके लायक होने के मुकाबले अधिक उपयोगकर्ता-निर्देश की आवश्यकता होगी। विचारों के लिए चीयर्स। – Wex

4

आप शरीर को भी सेट कर सकते हैं, लेकिन आपको स्ट्रिंग से बचना होगा।

NSString *sms = @"sms:+1234567890&body=This is the body."; 

NSString *url = [sms stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; 
+0

मुझे यकीन नहीं है कि यह हमेशा 'एसएमएस' योजना के साथ इस तरह से था , लेकिन ऐसा लगता है कि अब मामला है। – Wex