2011-12-19 10 views
11

W mojej aplikacji, jeśli użytkownik podał swoje konto gmail, jestem zobowiązany do otwarcia klienta pocztowego z danymi logowania do Gmaila, które pojawia się, gdy wybieramy opcję Gmail w programie pocztowym programowo, ale jeśli to konto jest już przechowywane w poczcie, wówczas muszę przekierować użytkownika bezpośrednio na jego konto. Czy ktokolwiek pliz może mi rzucić okiem na to, jak mogę to osiągnąć programowo?Otwarty klient poczty iPhone programowo

Odpowiedz

38

Nie będziesz mieć tak dużej kontroli nad aplikacją Mail, ponieważ wszystkie aplikacje na iPhone'a są w trybie piaskownicy, aby zapobiec ich zakłócaniu przez aplikacje Apple.

Jedyne co można zrobić (jeśli chcesz, aby otworzyć klienta poczty, aby wysłać e-mail), jest mniej więcej tak:

/* create mail subject */ 
NSString *subject = [NSString stringWithFormat:@"Subject"]; 

/* define email address */ 
NSString *mail = [NSString stringWithFormat:@"[email protected]"]; 

/* define allowed character set */ 
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet]; 

/* create the URL */ 
NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"mailto:?to=%@&subject=%@", 
                         [mail stringByAddingPercentEncodingWithAllowedCharacters:set], 
                         [subject stringByAddingPercentEncodingWithAllowedCharacters:set]]];  
/* load the URL */ 
[[UIApplication sharedApplication] openURL:url]; 

/* release the URL. If you are using ARC, remove this line. */ 
[url release]; 
+0

OK i dziękuję za odpowiedź. – user574089

2

Swift:

 if let url = NSURL(string: "mailto://\(email)") { 
      UIApplication.sharedApplication().openURL(url) 
     } 
2

Swift version of Leon Odpowiedź Rodenburga:

// define email address 
    let address = "[email protected]" 

    // create mail subject 
    let subject = "Subject" 

    // create the URL 
    let url = NSURL(string: "mailto:?to=\(address)&subject=\(subject)".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!) 

    // load the URL 
    UIApplication.sharedApplication().openURL(url!) 
0

Proponuję znacznie bardziej poprawioną odpowiedź. Aplikacja mobilna Slack.com wykonuje to, wykrywa typowych klientów poczty e-mail wymienionych na urządzeniu i pokazuje wyskakujący przycisk wyboru "klienta poczty e-mail", który chcesz otworzyć.

więc wdrożyć:

  1. Google dookoła aby znaleźć 10 najlepszych klientów pocztowych (np Mail, Google Skrzynka odbiorcza, Outlook Airmail etc).

  2. Wyświetl listę zainstalowanych aplikacji w telefonie, przeszukując wszystkie aplikacje (ale powiedziano mi, że teraz możesz tylko znaleźć, jeśli aplikacja jest jawnie zainstalowana, więc musisz wykryć aplikację).

  3. Pokaż listę podręczną, jeśli wykryta zostanie więcej niż jedna aplikacja e-mail, z prośbą o otwarcie aplikacji "która", np. Poczta, skrzynka odbiorcza.

To najlepsze rozwiązanie, jakie dotychczas widziałem.

Powiązane problemy