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:// |