Я уже нашел
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
Но я просто хочу открыть приложение Mail не только для композитора. Просто приложение для почты в его нормальном или последнем состоянии.
Любые идеи?
Я уже нашел
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
Но я просто хочу открыть приложение Mail не только для композитора. Просто приложение для почты в его нормальном или последнем состоянии.
Любые идеи?
Очевидно, что приложение Mail поддерживает 2-ю схему URL-адресов - message://
, которая (я полагаю) позволяет открыть конкретное сообщение, если оно было выбрано приложением. Если вы не укажете url сообщения, он просто откроет почтовое приложение:
NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
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]];
Быстрая версия исходного ответа 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)
}
}
Поскольку единственный способ запуска других приложений - использовать схемы URL-адресов, единственный способ открыть почту - использовать схему mailto:. Который, к сожалению, для вашего случая, всегда откроет представление для компоновки.
Вы можете открыть почтовое приложение, не открывая представление компоновки, используя схему URL message://
Запустите приложение на реальном устройстве и вызовите
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"[email protected]"]];
Обратите внимание, что эта строка не влияет на симулятор.
Вы можете запустить любое приложение на 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 *[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]];
Если вы используете Xamarin для разработчика приложения iOS, вот эквивалент С#, чтобы открыть представление композитора почтового приложения:
string email = "[email protected]";
NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email));
UIApplication.SharedApplication.OpenUrl(url);
в swift 2.3: открыть почтовый ящик
UIApplication.sharedApplication().openURL(NSURL(string: "message:")!)
Быстро 4/5, чтобы открыть почтовое приложение по умолчанию без просмотра. Если почтовое приложение удалено, оно автоматически показывает UIAlert с опциями для повторной загрузки приложения :)
UIApplication.shared.open(URL(string: "message:")!, options: [:], completionHandler: nil)
Возможно, вы захотите использовать скриптовый мост. Я использовал этот метод в своем приложении, чтобы напрямую дать пользователю возможность отправлять уведомления по электронной почте, используя встроенный Mail.app. Я также создал опцию, чтобы сделать это напрямую через SMTP в качестве альтернативы.
Но поскольку вы хотите использовать метод Mail.app, вы можете найти больше информации о том, как сделать это решение, выполнив следующие действия:
https://github.com/HelmutJ/CocoaSampleCode/tree/master/SBSendEmail
Удачи!
Откроется почтовое приложение по умолчанию с представлением композитора:
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];
}
Версия Swift 5:
if let mailURL = URL(string: "message:") {
if UIApplication.shared.canOpenURL(mailURL) {
UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
}
}
В Swift:
let recipients = "[email protected]"
let url = NSURL(string: "mailto:\(recipients)")
UIApplication.sharedApplication().openURL(url!)