LSApplicationQueriesSchemes

从iOS9之后,引入了白名单的概念。
1、在iOS9之后,如果使用 canOpenURL:方法,该方法所涉及到的 URL Schemes 必须在"Info.plist"中将它们列为白名单,否则不能使用。key叫做LSApplicationQueriesSchemes ,键值内容是对应应用程序的URL Schemes
2、在iOS9.0后,涉及到平台客户端的跳转,系统会自动到info.plist下检查是否设置Scheme。如果没有做相应的配置,就无法跳转到相应的客户端。因此如果客户端集成有分享与授权,需要配置Scheme白名单。
所以当你的应用在iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

LSApplicationQueriesSchemes
 
    
    wechat
    weixin

    
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5

    
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqzoneopensdk

    
    alipay
    alipayshare



在这里插入图片描述


扩展

CFBundleURLType 与 LSApplicationQueriesSchemes的区别

什么是CFBundleURLType?
LSApplicationQueriesSchemes_第1张图片
(输入“CFBundleURLTypes“。Xcode自动会为你创建一个必须的键:URL Identifier URL Schemes为自行添加字段)
或者
LSApplicationQueriesSchemes_第2张图片

区别:

CFBundleURLType:当前APP的scheme记录, 通过schema可在其它App中打开当前App
LSApplicationQueriesSchemes是从iOS9时被引入的。
用意:当前APP允许访问的APP有哪些,即白名单,需要通信双方均设置为对方的scheme,否则当调用对方App时,系统会告诉你This app is not allowed to query for scheme。
调用者和被调用者均需要设置白名单,一方想调用,另一方需要也知道将被你调用 ,更为安全。


链接
iOS应用间相互跳转
http://www.cocoachina.com/ios/20161026/17855.html

iOS 系统功能的 URL 汇总列表
https://www.jianshu.com/p/32ca4bcda3d1

你可能感兴趣的:(iOS基础)