oh-my-docs

Summary for developers


Project maintained by italkso Hosted on GitHub Pages — Theme by mattgraham

Safari Service

你可以通过「外链 Link」在应用中使用网页链接,不过它会使用户离开当前应用,跳转至应用外的网页。

Link(destination: URL(string: "https://www.example.com")!) {
    HStack {
    Text("Open in Safari")
            Image(systemName: "safari")
    }
}

你也可以在应用内打开 URL。此时,你可以使用Apple 的官方浏览器服务框架 Safari Service 或第三方库 BetterSafariView。注意, API / 包 / 库 / 框架等都是Package

你可以使用 Safari Service 框架将 Safari 行为集成到iOS 或 macOS 应用程序中,或者扩展 Safari 的行为。具体如下:

我们也可以使用第三方库实现应用内跳转外部网页的目标。比如,我们可以通过 SPM(Swift Package Manager)导入 BetterSafariView,详细步骤如下:

import SwiftUI
import BetterSafariView

struct ReadingNote: View {
    @State private var presentingSafariView = false

    var body: some View {
        NavigationView {
            ScrollView {
                VStack {
                    Link(destination: URL(string: "https://www.bing.com")!) {
                        RoundButton(text: "Open in Safari", image: "safari")
                    }

                    Button(action: {
                        self.presentingSafariView = true
                    }) {
                        RoundButton(text: "Open Links in this App", image: "arrow.up.forward.app")
                    }
                    .safariView(isPresented: $presentingSafariView) { SafariView(
                    
                        url: URL(string: "https://www.bing.com")!, configuration: SafariView.Configuration(
                        entersReaderIfAvailable: true, barCollapsingEnabled: true
                        )
                    )
                    .preferredBarAccentColor(.clear)
                    .preferredControlAccentColor(.orange)
                    .dismissButtonStyle(.close)
                    }
                }
            }
            .navigationTitle("Note")
        }
    }
}

Reference

[1] https://developer.apple.com/documentation/safariservices