Запустить приложение Apple Mail из моего собственного приложения?
Я уже нашел
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
Но я просто хочу открыть приложение Mail не только для композитора. Просто приложение для почты в его нормальном или последнем состоянии.
Любые идеи?
Ответы
Ответ 1
Очевидно, что приложение Mail поддерживает 2-ю схему URL-адресов - message://
, которая (я полагаю) позволяет открыть конкретное сообщение, если оно было выбрано приложением. Если вы не укажете url сообщения, он просто откроет почтовое приложение:
NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
Ответ 2
NSString *recipients = @"mailto:[email protected][email protected],[email protected]&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]];
Ответ 3
Быстрая версия исходного ответа Amit:
Swift 2:
func openMailApp() {
let toEmail = "[email protected]"
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 = "[email protected]"
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)
}
}
Ответ 4
Поскольку единственный способ запуска других приложений - использовать схемы URL-адресов, единственный способ открыть почту - использовать схему mailto:. Который, к сожалению, для вашего случая, всегда откроет представление для компоновки.
Ответ 5
Вы можете открыть почтовое приложение, не открывая представление компоновки, используя схему URL message://
Ответ 6
Запустите приложение на реальном устройстве и вызовите
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"[email protected]"]];
Обратите внимание, что эта строка не влияет на симулятор.
Ответ 7
Вы можете запустить любое приложение на iOS, если знаете его схему URL. Не знаю, что схема приложения "Почта" является общедоступной, но вы можете быть подлыми и попробовать следующее:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"message:message-id"]];
Подстаньте Фархаду Ноорзаю за то, что он меня внял. Это немного напоминает обратную разработку API приложений для почты. Подробнее здесь: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9
Ответ 8
Расширение ответа Амита:
Это запустит почтовое приложение с новым электронным письмом. Просто отредактируйте строки, чтобы изменить, как начинается новое письмо.
//put email info here:
NSString *[email protected]"[email protected]";
NSString *[email protected]"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]];
Ответ 9
Если вы используете Xamarin для разработчика приложения iOS, вот эквивалент С#, чтобы открыть представление композитора почтового приложения:
string email = "[email protected]";
NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email));
UIApplication.SharedApplication.OpenUrl(url);
Ответ 10
в swift 2.3: открыть почтовый ящик
UIApplication.sharedApplication().openURL(NSURL(string: "message:")!)
Ответ 11
Быстро 4/5, чтобы открыть почтовое приложение по умолчанию без просмотра. Если почтовое приложение удалено, оно автоматически показывает UIAlert с опциями для повторной загрузки приложения :)
UIApplication.shared.open(URL(string: "message:")!, options: [:], completionHandler: nil)
Ответ 12
Возможно, вы захотите использовать скриптовый мост. Я использовал этот метод в своем приложении, чтобы напрямую дать пользователю возможность отправлять уведомления по электронной почте, используя встроенный Mail.app. Я также создал опцию, чтобы сделать это напрямую через SMTP в качестве альтернативы.
Но поскольку вы хотите использовать метод Mail.app, вы можете найти больше информации о том, как сделать это решение, выполнив следующие действия:
https://github.com/HelmutJ/CocoaSampleCode/tree/master/SBSendEmail
Удачи!
Ответ 13
Откроется почтовое приложение по умолчанию с представлением композитора:
NSURL* mailURL = [NSURL URLWithString:@"mailto://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
Откроется приложение Mail по умолчанию:
NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
Ответ 14
Версия Swift 5:
if let mailURL = URL(string: "message:") {
if UIApplication.shared.canOpenURL(mailURL) {
UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
}
}
Ответ 15
В Swift:
let recipients = "[email protected]"
let url = NSURL(string: "mailto:\(recipients)")
UIApplication.sharedApplication().openURL(url!)