从我自己的应用程序启动苹果邮件应用程序?
我已经find的是
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
但是我只想打开邮件应用程序,而不仅仅是composer php视图。 只是在正常或最后一个状态的邮件应用程序。
有任何想法吗?
由于启动其他应用程序的唯一方法是使用它们的URLscheme,打开邮件的唯一方法是使用mailto:scheme。 不幸的是,你的情况,总是会打开撰写视图。
显然邮件应用程序支持第二个URLscheme – 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 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"]];
注意,这条线对模拟器不起作用。
扩展Amit的答案:这将启动邮件应用程序,并启动一个新的电子邮件。 只需编辑string即可更改新电子邮件的开始方式。
//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]];
如果您知道它的URLscheme,您可以在iOS上启动任何应用程序。 不知道邮件应用程序的scheme是公开的,但你可以偷偷摸摸,试试这个:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"message:message-id"]];
道具Farhad Noorzay提供了这方面的线索。 这是一些反向工程的邮件应用程序API。 更多信息: https : //medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9
如果您使用Xamarin来开发一个iOS应用程序,这里是C#相当于打开邮件应用程序作曲者视图:
string email = "yourname@companyname.com"; NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email)); UIApplication.SharedApplication.OpenUrl(url);
您可以打开邮件应用程序,而无需使用urlscheme打开撰写视图message://
快速2.3:打开邮箱
UIApplication.sharedApplication().openURL(NSURL(string: "message:")!)
在Swift中:
let recipients = "someone@gmail.com" let url = NSURL(string: "mailto:\(recipients)") UIApplication.sharedApplication().openURL(url!)