IOS跳转到系统相册及一些其他的URL Scheme
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:// |
mailto:// | |
iBooks | ibooks:// |
Music | music:// |
Videos | videos:// |