在info.plist中代码模式下添加:
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>aaa</string>
</array>
</dict>
</array>
aaa是自定义的协议
在AppDelegate.swift中,重写一个方法
//外界启动URL操作
func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
print("通过外界启动")
//获取当前ViewController并添加文字展示url
let label = UILabel(frame: CGRect(x: 50, y: 100, width: 400, height: 100))
label.text = "\(url)"
vc?.view.addSubview(label)
return true
}
在js中:
就可以通过浏览器打开自己的应用了
UIApplication.sharedApplication().openURL(NSURL(string: "aaa://")!)
当然后面也可以传递参数info.plist加入
<key>LSApplicationQueriesSchemes</key>
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
一定要用真机测试!!!
当然也可以通过URL的方式打电话,发短信,发邮件等等,可以参考这篇文章:点击打开链接
最后要说一下参数的解析方式,在handleOpenURL方法中传递过来的URL带有参数我们如何解析呢?
例如 url = aaa://learn.swift?name=zhangsan&age=13"
类型是NSURL,可以通过url.query得到参数字符串,在用字符串的根据符号‘&’分割的方法就可以得到参数key=value的字符串数组,再根据‘=’分割久可以分别得到key和value了。
let myArray = url.query?.componentsSeparatedByString("&")
var dict:NSMutableDictionary = NSMutableDictionary()
for i in myArray!{
let myArray2 = i.componentsSeparatedByString("=")
dict.setValue(myArray2[1], forKey: myArray2[0])
}
print(dict)