HowTo —— SwiftUI2.0 使用 Link 或 openURL 打开 URL scheme

SwiftUI2.0 提供了原生的打开 URL scheme 的功能,我们可以十分方便的在代码中调用其他的 app。

健康笔记是我开发的一个iOS app,主要服务于有长期健康管理需求的人士。可为全家不同成员创建各自的笔记,允许使用者自定义数据类型以记录各种健康数据。

推广

Link

类似于 NavigationLink , 直接打开 URL scheme 对应的 app

Link("openURL",destination:safariUrl)

openURL

本次在 SwiftUI2.0 中,苹果提供了若干个通过 Environment 注入的调用系统操作的方法。比如 exportFiles,importFiles,openURL 等。

@Environment(\.openURL) var openURL
openURL.callAsFunction(url)

代码范例

struct URLTest: View {
    @Environment(\.openURL) var openURL
    let safariUrl = URL(string:"http://www.apple.com")!
    let mailUrl = URL(string:"mailto:foo@example.com?cc=bar@example.com&subject=Hello%20Wrold&body=Testing!")!
    let phoneURl = URL(string:"tel:12345678")!
    
    var body: some View {
        List{
            Link("使用 safari 打开网页",destination:safariUrl)
            Button("发送邮件"){
                openURL.callAsFunction(mailUrl){ result in
                    print(result)
                }
            }
            Link(destination: phoneURl){
                Label("拨打电话",systemImage:"phone.circle")
            }
        }
    }
}

模拟器仅支持极少数的 URL,最好使用真机测试 苹果官方提供的一些 URL scheme

本博客所有文章除特别声明外,均采用CC 4.0许可协议。转载请注明出处和作者。

关注微信公共号肘子的Swift记事本或在推特上关注@fatbobman,永远不会错过新内容! 您的支持和鼓励将为我的博客写作增添更多的动力! 如果您或身边的朋友有健康数据管理的需求,请使用我开发的app【健康笔记】,正是因为它我才创建了这个博客。

关注