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

11 篇文章 0 订阅

在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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值