2013-02-14 5 views
10

Wir versuchen, eine iOS-App einzureichen, die gemeinnützige SMS-Spenden macht. Wir haben einige davon in der Vergangenheit ohne Probleme gemacht; Aber Apple ist nicht länger bereit, unseren Ansatz zu akzeptieren und unsere App abgelehnt.Gibt es eine andere Möglichkeit, die Nachrichten App in iOS zu starten? (für Spenden)

Ihre Behauptung ist, dass die App Punkt 21.2 der Richtlinien nicht entspricht. Welche ist:

21,2 Die Sammlung von Spenden muss über eine Website in Safari oder ein SMS

in der Vergangenheit und in dieser aktuellen App getan werden, wir verwenden MFMessageComposeViewController in der MessageUI Framework zum Erstellen der SMS-Nachricht. Wir benutzen das, weil; Als Spende für einen Shortcode müssen wir in der Lage sein, ein Schlüsselwort in die Nachricht zu schreiben.

Nach einigen Hin und Her in der Resolution Center (und eine Ablehnung Disput) die ich aus von Apple bekommen, was wir tun sollen sind:

Senden von SMS-Nachrichten aus der App stammt möglicherweise nicht den Richtlinien des App Store.

und

Der SMS-Link sollte Nachrichten starten Sie die Spende.

Wir können die sms:URL scheme verwenden, um die Nachrichten-App für eine bestimmte Anzahl zu starten, aber diese Methode uns unser erforderliches Schlüsselwort nicht zulässt, dass hinzuzufügen.


Die Frage ist also: Kennt jemand eine andere Möglichkeit, die Nachrichten App zu starten?

Unsere Fallback-Option besteht darin, das Erstellen einer SMS-Nachricht selbst aufzugeben und eine Warnung zu erhalten, die dem Benutzer "Text YYYY to ZZZZ" mitteilt, was eine ziemlich schlechte Benutzererfahrung ist.


Update (5. März 2013):

Wir erneut übermittelt die App wieder mit unserem Alert-only Ersatzoption ... es wurde abgelehnt wieder aus den gleichen Gründen. Wir bestreiten es erneut mit Apple.


Update (6. März 2013):

Nach einer strengen Nachricht an Apple erklärt die offensichtliche ... die App Vorlage bestanden hat.

schrieb ich:

Wir widersprechen müssen. Die App beinhaltet nicht die Möglichkeit, Spenden innerhalb der App zu sammeln. Es informiert den Benutzer nur darüber, wie er spenden kann.

Also; Wenn Sie das gleiche Problem haben, schlage ich vor, zuerst zu beschweren, bevor Sie Ihre App "reparieren".

Antwort

18

Ja und Nein

Auf einer grundlegenden Ebene: NEIN. Ich habe mir die Dokumente angesehen und Sie (eher frustrierend) können keinen Text für Ihre Nachricht festlegen, wenn Sie die Nachrichten App extern aufrufen.

Sie können nur:

  1. Öffnen Sie die Nachrichten-App

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]]; 
    
  2. Eingabe einer Nummer Nachricht an

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

Komplexer: JA. Hier ist die Methode und der Code zum Senden einer SMS mit Nachrichtentext. Es präsentiert eine Ansicht genau wie die Nachrichten App als ModalView. Und als Referenz you can read the docs here.

  1. Import des MessageUI Framework Projekt

  2. diese In der .h der Ansicht, dass die Aktion eine Nachricht senden ist (in meinem Fall einem einfachen Ansicht mit einem einzigen Knopf).

    #import <MessageUI/MessageUI.h> 
    #import <MessageUI/MFMessageComposeViewController.h> 
    
  3. Der wichtige Code, um die Nachricht zu senden, sollte ähnlich sein:

    -(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]; 
        } 
    } 
    

Der obige Code wird nicht Texte senden oder die Ansicht abzubrechen, da wir das nicht umgesetzt haben, messageComposeViewController:didFinishWithResult: Methode - die Dokumentation dafür kann here gelesen werden. Dies sieht wie folgt aus:

- (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; 
    } 
} 

In jedem Fall können Sie Sie Warnungen präsentieren können, entlassen die Ansicht (wie im Fall 1), oder irgendetwas Ihre Anwendung erfordert.

Ich bin sicher, dass diese zweite Methode genehmigt werden sollte oder Apple sollte es aus ihrer Dokumentation entfernen. Der Schlüssel ist jedoch die canSendText if-Anweisung. Wenn dies (oder der Fall Schalter für didFinishWithResult) nicht implementiert ist, wird Apple die App sicherlich ablehnen.

+0

Wir haben die zweite Route genommen; fast genau so, wie du es beschreibst. Sie haben uns immer noch im Stich gelassen. Das einzige, was wir anders machen, ist, dass wir keinen Schalter in didFinishWithResult haben - wir entlassen den Controller unabhängig vom Ergebnis. – Wex

+0

Ahh, ich habe gerade viel über Ihre Situation gelesen und ich denke, es ist eines dieser Dinge, die Apple nur zögerlich ändern will.Es scheint in Ordnung zu sein, Sachen für eine Farm zu kaufen, in der sie sich zurechtfinden - aber nicht für wohltätige Zwecke. Ich schätze, die Optionen bestehen darin, es abzuwarten und Ihre Benutzer anzuweisen, das Wort der Phrase einzugeben (vielleicht können Sie den Text automatisch in Zwischenablage kopieren, um den Prozess einfacher und benutzerfreundlicher zu machen). – Patrick

+0

Der nervige Teil ist, dass wir es schon einige Male mit Spenden-Apps gemacht haben. Jetzt müssen wir unserem Kunden erklären, dass Apple eine Veränderung des Herzens erfahren hat. Die Zwischenablage Idee ist nett; aber würde mehr Benutzeranweisung erfordern, als es wert ist. Prost für die Gedanken. – Wex

4

Sie können den Körper auch einstellen, aber Sie müssen die Zeichenfolge zu entkommen.

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

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

Ich bin mir nicht sicher, ob dies immer so mit dem 'sms:' Schema war , aber es scheint jetzt der Fall zu sein. – Wex

Verwandte Themen