APP 间的跳转主要通过 UIApplication.shared.openURL(url)] 这种方法来实现的,但iOS10 后又稍加不同,iOS10 之后就变成了 UIApplication.shared.open(url, options: Dictionary(), completionHandler: nil)
let urlStr = "weixin://"
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 = self.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:// |
mqq:// | |
微信 | weixin:// |
淘宝 | taobao:// |
点评 | dianping:// dianping://search |
微博 | sinaweibo:// |
名片全能王 | camcard:// |
支付宝 | alipay:// |
豆瓣fm | doubanradio:// |
京东 | openapp.jdmoble:// |
人人 | renren:// |
知乎 | zhihu:// |
优酷 | youku:// |