2013-02-14 25 views
10

Staramy się przesłać aplikację na iOS, która ułatwia darowizny na SMS-y charytatywne. Zrobiliśmy wiele z nich w przeszłości bez problemu; ale Apple nie jest już skłonny zaakceptować naszego podejścia i odrzucił naszą aplikację.Czy jest inny sposób uruchomienia aplikacji Wiadomości w systemie iOS? (w przypadku darowizn)

Ich wniosek jest taki, że aplikacja nie jest zgodna z pkt 21.2 wytycznych. Który jest:

21,2 zbiórki datków musi być wykonane za pośrednictwem strony internetowej w Safari lub SMS

W przeszłości, w tym bieżącej aplikacji, używamy MFMessageComposeViewController w MessageUI framework do budowania wiadomości SMS. Używamy tego, ponieważ; będąc darowizną na krótki kod, musimy mieć możliwość napisania słowa kluczowego w wiadomości.

Po nieco tyłu I do przodu w Centrum rozstrzygania sporu (a) Odrzucenie najbardziej mogę wydostać się z Apple, o co mamy robić to:

wysyłania wiadomości SMS z poziomu aplikacji może nie być zgodny z wytycznymi App Store.

i

Link SMS powinien uruchomić Wiadomości dokonać wpłaty.

Możemy użyć sms:URL scheme aby uruchomić aplikację Wiadomości dla pewnej liczby, ale ta metoda nie pozwala nam, aby dodać naszą wymaganą słowa kluczowego.


Pytanie brzmi: Czy ktoś wie o innym sposobie uruchamiania aplikacji Wiadomości?

Nasza opcja awaryjna jest zrezygnować z budowy SMS siebie i mieć alert, który informuje użytkownika „yyyy Tekst ZZZZ”, które jest bardzo słabe doświadczenie użytkownika.


Update (05 marca 2013):

Mamy ponownie przesłać aplikację ponownie z naszego alertu-jedyna opcja awaryjna ... został ponownie odrzucony z tych samych powodów. Znów spieramy się z Apple.


Update (06 marca 2013):

Po rufa wiadomość do firmy Apple wyjaśniając oczywiste ... aplikacja przeszła zgłoszenia.

pisałem:

Musimy zgodzić. Aplikacja nie zawiera możliwości zbierania darowizn charytatywnych w aplikacji. Informuje tylko użytkownika, jak może przekazać darowiznę.

Tak; jeśli masz ten sam problem, proponuję najpierw złożyć skargę, zanim zajmiemy się "naprawianiem" Twojej aplikacji.

Odpowiedz

18

Tak i Nie

Na poziomie podstawowym: NIE. miałem wygląd poprzez docs i (raczej denerwująco) nie można ustawić ciało do wiadomości podczas wywoływania aplikacji Wiadomości na zewnątrz.

Można tylko:

  1. otworzyć aplikację wiadomości

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]]; 
    
  2. Wprowadź numer wiadomości do

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

Bardziej złożony TAK. Oto metoda i kod do wysyłania wiadomości SMS z treścią. Przedstawia widok dokładnie taki jak aplikacja wiadomości jako ModalView. I dla odniesienia you can read the docs here.

  1. importować Framework MessageUI do projektu

  2. Dodaj je do ncurses.h z poglądem, że działania, aby wysłać wiadomość jest (w moim przypadku prostego widok za pomocą jednego przycisku).

    #import <MessageUI/MessageUI.h> 
    #import <MessageUI/MFMessageComposeViewController.h> 
    
  3. Ważną kod, aby wysłać wiadomość powinna być podobna do:

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

Powyższy kod nie wyśle ​​tekstów lub anulować widok jak nie wdrożyły messageComposeViewController:didFinishWithResult: metoda - dokumenty do tego można odczytać here. Będzie to wyglądać następująco:

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

W każdym przypadku można można przedstawić alarmy oddalenie widoku (jak w przypadku 1), lub cokolwiek aplikacja wymaga.

Jestem pewien, że ta druga metoda powinna zostać zatwierdzona lub Apple powinno usunąć go z ich dokumentacją. Kluczową rzeczą jest jednak instrukcja canSendText if. Jeśli ten (lub przełącznik przypadku dla didFinishWithResult) nie zostanie wdrożony, Apple z pewnością odrzuci aplikację.

+0

Przejechaliśmy drugą trasę; prawie dokładnie tak, jak opisujesz. Nadal nas zawiedli. Jedyną rzeczą, którą robimy inaczej jest to, że nie mamy switch-case w didFinishWithResult - odrzucamy kontroler niezależnie od wyniku. – Wex

+0

Ahh, Właśnie przeczytałem wiele o swojej sytuacji i myślę, że to jedna z tych rzeczy, Apple, niechętnie na zmianę.Wydaje się, że dobrze jest kupować rzeczy na udawaną farmę w aplikacji - gdzie dostają pieniądze - ale nie przekazują pieniędzy na cele charytatywne. Sądzę, że można odczekać i polecić użytkownikom wpisanie słowa frazeologicznego (może automatycznie skopiować tekst do schowka, aby proces był łatwiejszy i bardziej przyjazny dla użytkownika). – Patrick

+0

Denerwujące jest to, że zrobiliśmy to w ten sposób kilka razy dzięki aplikacjom darowizn. Teraz musimy wyjaśnić naszemu klientowi, że Apple zmieniło zdanie. Pomysł na schowek jest przyjemny; ale wymagałoby więcej instrukcji dla użytkownika niż jest to warte. Pozdrowienia za myśli. – Wex

4

Można ustawić ciało, jak również, ale trzeba uciec ciąg.

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

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

Nie jestem pewien, czy to zawsze było tak w przypadku schematu 'sms:' , ale wydaje się, że tak jest teraz. – Wex