乱搞胡闹瞎几把扯系列(URL)

一些写给自己看的辣鸡总结(关于openURL)



iOS 9 以上出现的canOpenURL问题

在iOS9之前大体上都是直接进行调用就能得到手机中是否已经装有某app否的结果。但是在iOS9之后出现了白名单存在,大体要求如下:

如使用xcode 7 以上编译工程时,需要在plist文件中添加LSApplicationQueriesSchemes描述字段属性为Array。且数量约束为50个。

xcode7以下就只能自求多福了,因为没有字段存在的原因,但是限制依然存在。手机app太多的话可能就可能注册不上。


iOS10 调用openURL出现的严重延迟问题

在iOS10 之后苹果新开了一个方法如图:(下面都是非正版API官翻)


乱搞胡闹瞎几把扯系列(URL)_第1张图片
iOS10 后的新方法

(有点苦逼的是,原先版本连个警告都没有,倒也是省去了写代码减去这些警告的过程)

这个地方有个东西让我很感兴趣就是这个asynchronously,我不知道是出于一个什么样的想法要凸显这个吗 ? 目前还没有什么办法能得到这个东西的莫些结论和事情,先且不表。


URL:

在iOS9 以后出现了一个新的东西universal links。(这里先提一下)

这个URL所标识的资源可能是这个app的本地资源,当然也有可能是别的不同的app提供的资源。UIKit框架支持多种常见的协议体系,比如常见的http、https、tel、facetime 以及mailto这些协议体系。当然你也可以使用你手机所安装的手机app定制的自定义的URL协议体系。 (顺带一提上面的那种问题需要注意:--------iOS 9 以上出现的canOpenURL问题 )


options:

这个字典中包含的是打开URL使用的字典选项列表,当前只有一中键值

乱搞胡闹瞎几把扯系列(URL)_第2张图片
唯一键值

在默认的时候这个键值是NO,如果你要是想使用前面提到的universal links 那么这里可以设置为YES。这里先不提。


completionHandler:

这里是执行结果的块。如果你想获得打开这个URL是成功还是失败,那就为这个块的参数提供一个BOOL值。这个块会在主线程中异步进行。并且不需要任何的返回值,且会给你返回一个数值:

success  一个用来标示你此次打开的URL是否成功 。或许那个异步就是说明这里但是总感觉哪里不对。


描述

使用这个方法打开一个特定的资源,如果这个资源是由一个另外的app所持有的,iOS系统将会启动那个app并将URL传递给他。(当然启动会直接使这个App进入前台),但是如果没能找到一个aoo来处理这个事情的话 那就会调用回调块并返回NO。

如果你想确认是否存在一个app能够处理这个URL,你可以在调用这个方法前调用canOpenURL:方法。但是请务必保证你以及阅读过canOpenURL:这个方法的说明以保证你对于采用这种的协议有所了解。


canOpenURL:

这个方法会返回一个BOOL值,这个BOOL值会表示你的设备上是否存在一些可以处理这个URL的应用。(如果有很多个会怎么样呢 等有空来搞一下)


参数URL:

这特码就是个URL,在运行时的时候系统会去试这个URL来确定这个URL是不是被设备上一个或者多个app注册处理这种URL协议,当然你可以有多个app都注册这个协议。同时这个URL也并不会阻止你使用系统app的一些协议如tel等。

要注意的是如果你没有在plist中添加白名单列表也是会给你NO,即使你确实装了能处理这种协议的app。当然你没装的话 那就妥妥的是NO。


重点来了

如果这个方法(不知道是啥方法的 你不会让我再在这个地方再打一次方法吧?)返回了YES,那么恭喜你iOS系统能够向你担保你如果在这个之后就开启这个一样的URL至少能保证一定有一个能够处理这个URL的app来响应你, 并处理你的URL。但是这个返回值并不是说你要的东西就一定存在,或者说这个URL就一定是合法正确的。就好像啊你说戒色大师,本人按照多年摸爬滚打的经验告诉你少林寺可能知道有没有这个人,但是我只是告诉你少林寺知道,具体这个人是不是真的有我是真不晓得。虽然贫僧戒色。。。

如果你的app是搭建在iOS9.0 及其之后版本的设备上,那么你就必须要声明URL schemes以保障你这个方法的返回是正常的。所以请你在plist中添加LSApplicationQueriesSchemes关键字。但是如果你看到这里还是选择不加关键字或者你没看的时候没有加,就去调用这个方法。那么恭喜你不管你到底装了没有那都是给你NO,不服?(这里苹果API又叫你去看一个新的东西 老套路了)如果你的app是处于一个早期版本但是有时在9.0之后的版本运行的,辣么你就能调用这个方法50次。之后呢 那就一直是NO,当然这个时候你会发现重装和更新又能让你的app可以再请求50次。

这也就是因为没看啊 一开始哎返回的好像是正确的╮(╯▽╰)╭

哎看来网上的都是危言耸听,知道有一天你们老板用吃人的眼神看着你。

━((*′д`)爻(′д`*))━!!!! 你就夭寿了。

悲伤辣莫大 _(:з」∠)_

当然你可以不管啊反正openURL不吃这一套。

---------------------------这里开始非正版官翻没有了----------------------


开始研究为啥

研究个屁啊 妈个蛋蛋 等有空再说 说好的技术贴变成翻译帖了。郁闷( ˇˍˇ )

你可能感兴趣的:(乱搞胡闹瞎几把扯系列(URL))