IOS跳转到系统相册及一些其他的URL Scheme

发布时间 2023-04-05 14:01:39作者: R1cardo

IOS跳转到系统相册及一些其他的URL Scheme

APP 间的跳转主要通过 UIApplication.shared.openURL(url) 这种方法来实现的,但iOS10 后又稍加不同,iOS10 之后就变成了 UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)

if let url = URL(string: urlStr) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)
            } else {
                UIApplication.shared.openURL(url)
            }
        }

跳转系统内相册应用可以通过 UIApplication.shared.openURL("photos-redirect://") 来实现,但是审核时会被当成使用私有API处理,所以我们需要做一下 base64 编码混淆处理。

// 跳转
        let urlStr = decode("cGhvdG9zLXJlZGlyZWN0Oi8v")
        if let url = URL(string: urlStr) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)

            } else {
                UIApplication.shared.openURL(url)
            }
        }

为通过审核,对 "photos-redirect://" 进行base64编码混淆后再解码

// base64解码
        func decode(_ string: String) -> String {
            let data = Data(base64Encoded: string, options: [])
            let decodedStr = String(data: data ?? Data(), encoding: .utf8)
            return decodedStr ?? ""
        }

其它系统的 URL Scheme

app URL scheme
打10086电话 tel://10086
App Store itms-apps://
Safari http://muhlenxi.com/
Maps maps://
备忘录 mobilenotes://
SMS sms://
Mail mailto://
iBooks ibooks://
Music music://
Videos videos://