Открыть почтовый клиент iPhone программно - PullRequest
15 голосов
/ 19 декабря 2011

В моем приложении, если пользователь предоставил свою учетную запись gmail, я должен открыть почтовый клиент с учетными данными для входа в gmail, который появляется, когда мы выбираем опцию gmail для почты программно, но если эта учетная запись уже хранится в почте, тогда я требуется перенаправить пользователя непосредственно в его аккаунт. Кто-нибудь может, плиз, дать мне представление о том, как я могу достичь этого программным путем.

Ответы [ 4 ]

42 голосов
/ 19 декабря 2011

Вы не получите такого большого контроля над приложением «Почта», так как все приложения на iPhone помещены в «песочницу», чтобы они не мешали приложениям Apple.

Единственное, что вы можете сделать (если вы хотите открыть почтовый клиент для отправки электронной почты), это что-то вроде этого:

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

/* define email address */
NSString *mail = [NSString stringWithFormat:@"test@test.com"];

/* 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];
5 голосов
/ 18 апреля 2015

Свифт:

        if let url = NSURL(string: "mailto://\(email)") {
            UIApplication.sharedApplication().openURL(url)
        }
4 голосов
/ 06 октября 2015

Быстрая версия ответа Леона Роденбурга:

    // define email address
    let address = "test@test.com"

    // 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!)
2 голосов
/ 01 ноября 2017

Я бы предложил гораздо более улучшенный ответ. Мобильное приложение Slack.com делает это, оно обнаруживает распространенные почтовые клиенты, перечисленные на устройстве, и показывает всплывающее окно выбора «какого» почтового клиента, который вы хотите открыть.

Итак, реализовать:

  1. Поищите в Google 10 лучших почтовых клиентов (например, Почта, Входящие Google, OutLook, AirMail и т. Д.).

  2. Получить список установленных приложений на телефоне можно, выполнив поиск по всем приложениям (но мне сказали, что теперь вы можете найти только если приложение установлено явно, поэтому вам нужно будет обнаружить приложение).

  3. Показать всплывающий список, если обнаружено более 1 приложения электронной почты, запрашивая их «какое» приложение открыть, например. Почта, Входящие.

Это лучшее решение, которое я видел на сегодняшний день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...