URL 失败:“message://” - 错误:“此应用程序不允许查询方案消息”

GSe*_*lis 2 ios swift swiftui

我想打开电子邮件应用程序(从模拟器)并从那里发送电子邮件,但是当我单击按钮时,我收到下面的错误,但应用程序没有崩溃

错误:

iGrow Goals[41098:3002008] -canOpenURL: failed for URL: "message://" - error: "This app is not allowed to query for scheme message"
Run Code Online (Sandbox Code Playgroud)

我的功能:

func sendEmail() {

    //  Converted to Swift 5.4 by Swiftify v5.4.24488
    let mailURL = URL(string: "message://")
    if let mailURL = mailURL {
        if UIApplication.shared.canOpenURL(mailURL) {
            UIApplication.shared.open(mailURL, options: [:], completionHandler: nil)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*r G 5

这在模拟器中不起作用,仅在真实设备上起作用。

不要忘记配置您的 Info.plist 并在该键下添加消息条目:LSApplicationQueriesSchemes,以便您可以使用 canOpenURL 查询它。

将 URl 查询方案列入白名单的示例 Info.plist 文件:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>googlegmail</string>
  <string>mailto</string>
  <string>instagram</string>
  <string>message</string>
</array>
Run Code Online (Sandbox Code Playgroud)

信息表

您还可以考虑使用 mailto 模式

let mailURL = URL(string: "mailto://example@example.com")
Run Code Online (Sandbox Code Playgroud)