URL Schemes通常用于分享和第三方登录,但有时需要在html跳至APP,或者APP跳至另外一个APP.这时也需要使用URL Schemes.
一.html跳转至APP
eg:html跳转至test1
在APP中添加URL Schemes,这里的URL Schemes随意写均可,如图:
2.在AppDelegate.swift中加入,func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject])
-> Bool这个方法:
//MARK: - 通过下面的方法实现点击html可以打开app
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject])
-> Bool {
if url.host == nil
{
return true;
}
let urlString = url.absoluteString //url 的绝对字符串
let queryArray = urlString.componentsSeparatedByString("/") //通过/把URL切成数组
//传参
// let alertController = UIAlertController(title: "参数如下",
// message: "\(queryArray[2]) \(queryArray[3])", preferredStyle: .Alert)
// let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: nil)
// alertController.addAction(cancelAction)
// self.window!.rootViewController!.presentViewController(alertController, animated: true, completion: nil)
//打开相应界面
let tababarController = self.window!.rootViewController!.childViewControllers[] as! UITabBarController
if queryArray[] == "item1" {
tababarController.selectedIndex = //使tabcarController选中第一个tabbaritem
}else if queryArray[] == "item2"{
tababarController.selectedIndex = //使tabcarController选中第二个tabbaritem
}
//测试方法:
//先安装test1
//打开浏览器地址栏输入
// test1:// 打开test1
// test1://item1 打开test1的第一个item
// test1://item2 打开test1的第二个item
//上面的test1就是工程中配置的URL Schemes
return true
}
二.APP打开APP
eg:test1打开test2
先在test2中配置URl Schemes,然后在test1中写代码即可:
在点击test1中的一个按钮时,在其点击方法中通过openURL打开即可.
@IBOutlet var btn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
btn.addTarget(self, action: #selector(Tab2ViewController.btnClick), forControlEvents: .TouchUpInside)
// Do any additional setup after loading the view.
}
func btnClick(){
let urlString = "test2://"
let url = NSURL(string: urlString)
UIApplication.sharedApplication().openURL(url!)
}
同时,因为iOS9的安全因素,需要在test1中设置白名单.设置方法参考:http://www.cnblogs.com/shaoting/p/5148323.html
其余常见应用的URL Schemes:http://www.cnblogs.com/shaoting/p/5148323.html