- URL Scheme是什么
我们可以对比网页链接来理解:
- URL:简单的比如:www.apple.com就是一个url,我们也叫它链接或网址。
- Scheme:表示的是一个 URL 中最初始的位置,即 ://之前的那段字符。比如www.apple.com这个网址的 Schemes是 http。
这样我们就很容易理解,在本地应用为主的iOS系统中,我们可以像寻找一个网页一样,通过一种特殊的URL来定位一个应用甚至应用中的某个功能。举个例子,如果我们要打开微信,那么我们只需要找到微信应用的scheme就可以了,也就是weixin://;但是我们要打开微信的朋友圈,我们还需要加上后面的url,也就是weixin://dl/moments。
2. URL Scheme如何设置
我们可以理解,如果想要其他应用识别出我们的应用,比如在支付完成后从支付宝跳转回我们的应用或者分享结束后返回我们的应用,就需要将我们应用设置的URL scheme告诉其他应用。那么如何设置URL scheme呢?下面我们就来试一试吧。
首先选中工程的target->info->URL Types
在URL Schemes中设置自己应用的scheme就可以了。
这时我们的info.plist就变成了这样:
这样,当我们调起支付宝或其他应用时,将已经设置好的scheme传给他们就可以了。一般情况下一个应用只需要一个且唯一的scheme就可以了,但是当我们集成了第三方应用,比如友盟分享时,他会要求我们按照一个标准来设置应用的scheme,这时我们可以根据需要多添加一个scheme。
- 配置URL scheme的白名单
canOpenURL:方法先判断能否打开这个url,然后再用openURL方法打开该URL的。这样可以带来更好的用户体验。因为iOS9的时候苹果加强了权限,只有在info.plist文件中加入了URL Schemes白名单才能使用canOpenURL:方法来判断是否能打开该url。该白名单的上限是50个。也就是说,你最多只能使用canOpenURL:方法判断50个URL Schemes。当然,平常我们都用不了那么多,就算是集成分享功能,50个肯定够了。
备注:只是对
canOpenURL:方法有限制,openURL:方法是没有限制的。
我们需要在MyApp的info.plist里面将weixin设置为白名单。
步骤:点击info.plist->右键->Open As->Source Code->添加下面的代码
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
这样就可以了。