让用户在 iOS 上选择一个电子邮件客户端

Posted

技术标签:

【中文标题】让用户在 iOS 上选择一个电子邮件客户端【英文标题】:Let the user choose an e-mail client on iOS 【发布时间】:2017-07-31 12:28:57 【问题描述】:

我们希望用户能够在我们的应用中选择任何已安装的电子邮件客户端(Gmail、Yandex 等)。但 ios 仅提供 Mail 或内置 MFMailComposeViewController。有没有办法向用户展示电子邮件客户端列表?

【问题讨论】:

How can I launch an email client on ios using Swfit的可能重复 电子邮件? iMail 视图控制器? 我的意思是 Mail 或 MFMailComposeViewController 【参考方案1】:

没有办法直接实现这一点,因为 iOS 不知道“默认应用程序”的概念。您可以自己实现一个功能,检查不同 iOS 电子邮件客户端使用的各种 URL,并确定安装了哪些客户端。例如,GMail 使用googlegmail://。您还可以显示设备上的客户端菜单。

如果您不想创建自己的实现,ThirdPartyMailer 是一个可以为您执行此操作的库。

【讨论】:

在这个ThirdPartyMailer中如何在邮件中附加zip文件? 由于iOS14用户现在可以设置一个默认邮件应用,当你在你的应用中使用mailto://时会用到该应用【参考方案2】:

如果您正在寻找类似于 android 处理方式的东西,那么不,这是不可能的。一些电子邮件应用程序可能支持自定义方案 - 例如 Gmail 使用 googlegmail://(取自 this question)。

【讨论】:

【参考方案3】:

你应该试试这样的:

let url = NSURL(string: "mailto:jon.doe@mail.com")
UIApplication.sharedApplication().openURL(url)

【讨论】:

谢谢,但这会打开 iMail。 因此您必须使用可用邮件客户端列表创建自己的 Picker。要构建此列表,您可以检查每个方案,如果 canOpenUrl: 它会告诉您用户是否安装了应用程序 我想知道是否有办法展示所有可以处理“mailto”链接的应用程序。 我不这么认为

以上是关于让用户在 iOS 上选择一个电子邮件客户端的主要内容,如果未能解决你的问题,请参考以下文章

找出用户在iOS显示的UIAlertView上选择了哪个按钮的方法,请求允许应用程序接收推送通知

在 iOS 上选择退出 UISceneDelegate/SwiftUI

如何使用swift在ios上选择和删除诸如whatsapp或iMessage之类的消息

常用TCP协议

无法在 iOS 8 上选择联系人

在真实设备上选择 PDF 时 iOS 文档选择器崩溃