您的位置:首页 > 移动开发 > Swift

iOS swift 通过Url打开自定义的app

2015-11-03 14:32 453 查看
在info.plist中代码模式下添加:

<key>CFBundleURLTypes</key>

<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 vc = self.window?.rootViewController

let label = UILabel(frame: CGRect(x: 50, y: 100, width: 400, height: 100))

label.text = "\(url)"

vc?.view.addSubview(label)

return true

}

在js中:

<a href="aaa://learn.swift?name=zhangsan&age=13">打开aaa应用</a>

就可以通过浏览器打开自己的应用了

在其他app中,通过以下代码打开自己的应用 

UIApplication.sharedApplication().openURL(NSURL(string: "aaa://")!)
当然后面也可以传递参数

openUrl这个方法返回类型是bool,有时候会出现即使成功打开应用也返回false的情况。
可以先调用UIApplication.sharedApplication().canOpenUrl()来得到正确的值。
即使是这样,也有可能返回false并在控制台输出一个错误。

解决方法:把需要打开的URL加入自己应用的info.plist

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: