废话不说,先附上完整的scheme白名单:
这里只是微信和QQ分享所需的。如果还要微博等其他分享,请自行查找,不过debug的时候Xcode一般会打印出你还缺少哪些白名单,所以当你调试的时候发现没有成功调起第三方分享app,请注意查看Xcode的底部log。讲提示的scheme添加进LSApplicationQueriesSchemes即可。
再附上完整的URL types:
这里也只是微信和QQ分享所需添加的URL type。注意划线的地方,第一个wx开头的是你的微信开放平台得到的appid,第二个QQ开头的是“QQ+qq开放平台的appid的十六进制”。注意:我们在qq开发平台上得到只10进制的appid,直接百度一下有在线10进制转换为16进制的工具。第三个就是我们自己app的URL type。
最后说一下我的傻逼经历:我是先看的官方文档吧URL type填写好,然后开始真机测试,结果就是打不开QQ和微信,然后就看到Xcode的log提示没有添加mqq,mqqwpa,mqzone。。。。之类的Scheme。然后我就想当然的认为吧这些东西添加到了URL type中!!结果居然一切OK了,正常的打开了QQ和微信,并且正常的返回。我以为就这样结束了。知道后来我在手机中同时安装了两个项目测试的时候(当然这两个项目都是我做的并且URL type和LSApplicationQueriesSchemes都是我填的。)才发现我在其中一个项目中打开微信分享居然调起的不是微信而是我的另一个项目,那一瞬间我是懵逼的!!然后我立马想到这肯定是URL type和Scheme白名单的问题。
scheme白名单是ios9的新机制,为得就是更安全的调起第三方应用。所以我现在最对URL type和LSApplicationQueriesSchemes的最终理解就是:URL type里的字段是为了让别的应用能调起你自己的app,而LSApplicationQueriesSchemes里的字段是让系统允许你自己的app调起第三方app的。就相当于你LSApplicationQueriesSchemes中的字段是别人app中的URL type字段,而你URL type中的字段就是别人app中的LSApplicationQueriesSchemes中的字段。
我这么理解不知道是不是正确,请各位看官有更高简介的不吝赐教!