Запустите приложение Apple Mail из моего собственного приложения?
что я уже нашел
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
но я просто хочу открыть приложение Mail не только представление композитора. Просто почтовое приложение в своем обычном или последнем состоянии.
какие идеи?
11 ответов:
поскольку единственный способ запустить другие приложения-это использовать их схемы URL, единственный способ открыть почту - это использовать схему mailto:. Который, к сожалению для вашего случая, всегда откроет окно написать письмо.
по-видимому, почтовое приложение поддерживает 2-ю схему url -
message://
который (я полагаю) позволяет открыть конкретное сообщение, если оно было извлечено приложением. Если вы не предоставите url-адрес сообщения, он просто откроет почтовое приложение:NSURL* mailURL = [NSURL URLWithString:@"message://"]; if ([[UIApplication sharedApplication] canOpenURL:mailURL]) { [[UIApplication sharedApplication] openURL:mailURL]; }
NSString *recipients = @"mailto:first@example.com?cc=second@example.com,third@example.com&subject=Hello from California!"; NSString *body = @"&body=It is raining in sunny California!"; NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body]; email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
Swift версия оригинального ответа Амита:
Swift 2:
func openMailApp() { let toEmail = "stavik@outlook.com" let subject = "Test email".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet() let body = "Just testing ...".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet() if let urlString = ("mailto:\(toEmail)?subject=\(subject)&body=\(body)")), url = NSURL(string:urlString) { UIApplication.sharedApplication().openURL(url) } }
Swift 3.0:
func openMailApp() { let toEmail = "stavik@outlook.com" let subject = "Test email".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) let body = "Just testing ...".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) if let urlString = "mailto:\(toEmail)?subject=\(subject)&body=\(body)", url = URL(string:urlString) { UIApplication.shared().openURL(url) } }
запустите приложение на реальном устройстве и позвоните
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"your@email.com"]];
обратите внимание, что эта строка не влияет на симулятор.
вы можете открыть приложение mail без использования открытия представления compose с помощью схемы url
message://
вы можете запустить любое приложение на iOS, Если вы знаете его схему URL. Не знаю, что схема почтового приложения является общедоступной, но вы можете быть подлым и попробовать это:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"message:message-id"]];
реквизит для Фархада Нур-за то, что втянул меня в это. Это немного обратный инжиниринг API почтового приложения. Более подробная информация здесь: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9
расширение ответа Амита: Это запустит почтовое приложение, с новой электронной почтой запущен. Просто отредактируйте строки, чтобы изменить способ начала нового сообщения электронной почты.
//put email info here: NSString *toEmail=@"supp0rt.fl0ppyw0rm@gmail.com"; NSString *subject=@"The subject!"; NSString *body = @"It is raining in sunny California!"; //opens mail app with new email started NSString *email = [NSString stringWithFormat:@"mailto:%@?subject=%@&body=%@", toEmail,subject,body]; email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
Если вы используете Xamarin для разработки приложения iOS, вот эквивалент C#, чтобы открыть представление композитора почтового приложения:
string email = "yourname@companyname.com"; NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email)); UIApplication.SharedApplication.OpenUrl(url);