iOS开发分享之“白名单”

iOS开发之第三方分享QQ分享,史上最新最全第三方分享QQ方式实现 本文章源码地址: https://github.com/zhonggaorong/QQLoginDemo 项目搭建参考:  (包含QQ登录源码下载 、 QQ sdk集成) http://blog.youkuaiyun.com/zhonggaorong/article/details/51699623 分享第三方分享之QQ分享各种坑的总结: 1. 分享老是提示未注册QQ,解决办法就是 阅读详情

本文转自:http://www.2cto.com/kf/201602/489546.html

WWDC 2015 Session 703: "Privacy and Your App ( 时间在30:18左右)关于 URL scheme 的介绍,指出:

enter image description here

也就是说:在iOS9中,如果使用 canOpenURL: 方法,该方法所涉及到的 URL scheme 必须在"Info.plist"中将它们列为白名单,否则不能使用。key叫做LSApplicationQueriesSchemes ,键值内容是

LSApplicationQueriesSchemes

 urlscheme
 urlscheme2
 urlscheme3
 urlscheme4
 

  

白名单上限是50个:

WWDC 2015 Session 703: "Privacy and Your App )有说明:

“So for apps that are linked before iOS 9 and are running on iOS 9, they will be given 50 distinct URL schemes.” -- WWDC 2015 session 703 Privacy and Your App

 

iOS9中 openURL: 方法没有什么实质性的变化,仅仅多了一个确认动作:

enter image description here

苹果为什么要这么做?

在 iOS9 之前,你可以使用 canOpenURL: 监测用户手机里到底装没装微信,装没装微博。但是也有一些别有用心的 App ,这些 App 有一张常用 App 的 URL scheme,然后他们会多次调用canOpenURL: 遍历该表,来监测用户手机都装了什么 App ,比如这个用户装了叫“大姨妈”的App,你就可以知道这个用户是女性,你就可以只推给这个用户女性用品的广告。这是侵犯用户隐私的行为。

这也许就是原因。

本项目中给出了一个演示用的 Demo ,仓库的文件夹叫“Demo3_iOS9URLScheme适配_引入白名单概念”,Demo引用自LSApplicationQueriesSchemes-Working-Example

Demo结构如下:

enter image description here

主要演示的情景是这样的:

假设有两个App: weixin(微信) and 我的App. 我的App 想监测 weixin(微信) 是否被安装了. "weixin(微信)" 在 info.plist 中定义了 URL scheme :

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>weixin</string>
        </array>
    </dict>
</array>

我的App 想监测 weixin(微信) 是否被安装了 :

[[UIApplication sharedApplication]
                    canOpenURL:[NSURL URLWithString:@"weixin(微信)://"]];

  

即使你安装了微信,在iOS9中,这有可能会返回NO:

因为你需要将 "weixin(微信)" 添加到 “我的App” 的 info.plist 文件中:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
</array>

(以上只是为了演示,实际开发中,你不仅需要添加“weixin”还需要“wechat”这两个。具体下文给出表格)

另外,推荐一篇博文,其中最关键的是以下部分:

If you call the “canOpenURL” method on a URL that is not in your whitelist, it will return “NO”, even if there is an app installed that has registered to handle this scheme. A “This app is not allowed to query for scheme xxx” syslog entry will appear.

 

常见 URL Scheme

如果想一次性集成最常用的微信、新浪微博、QQ、支付宝四者的白名单,则配置如下:

 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


  

plist 文件看起来会是这样的:

enter image description here

其他平台可在下面的列表中查询: 各平台OpenURL白名单说明

平台名称URL Schem补充说明
微信wechat,

 

weixin
 
支付宝alipay,

 

alipayshare
 
QQmqqOpensdkSSoLogin,

 

mqqopensdkapiV2,

 

mqqopensdkapiV3,

 

wtloginmqq2,

 

mqq,

 

mqqapi
 
QZONEmqzoneopensdk,

 

mqzoneopensdkapi,

 

mqzoneopensdkapi19,

 

mqzoneopensdkapiV2,

 

mqqOpensdkSSoLogin,

 

mqqopensdkapiV2,

 

mqqopensdkapiV3,

 

wtloginmqq2,

 

mqqapi,

 

mqqwpa,

 

mqzone,

 

mqq
[注:若同时使用QQ和QZONE,则直接添加本格即可]
新浪微博sinaweibo,

 

sinaweibohd,

 

sinaweibosso,

 

sinaweibohdsso,

 

weibosdk,

 

weibosdk2.5
[后两个若导入新浪SDK则需要]
豆瓣无需配置 
开心网无需配置 
易信yixin,

 

yixinopenapi
 
Google+googlechrome,

 

googlechrome-x-callback,

 

hasgplus4,

 

com.google.gppconsent,

 

com.google.gppconsent.2.2.0,

 

com.google.gppconsent.2.3.0,

 

com.google.gppconsent.2.4.0,

 

com.google.gppconsent.2.4.1
 
人人网renrenapi,

 

renrenios,

 

renreniphone,

 

renren,
 
Facebook见下文 
Twitter无需配置 
Pocketpocket-oauth-v1 
Pinterestpinit 
Instagraminstagram 
WhatsAppwhatsapp 
Lineline 
KakaoTalkkakaolink 
KaokaoStorystorylink 
LinkedIn无需配置 
Tumblr无需配置 
非平台类无需配置( 如短信,复制,邮件等)

另外, Facebook 的URL Scheme白名单需要注意:

如果 SDK 版本低于 4.5 应补充

LSApplicationQueriesSchemes

    fbapi
    fbapi20130214
    fbapi20130410
    fbapi20130702
    fbapi20131010
    fbapi20131219    
    fbapi20140410
    fbapi20140116
    fbapi20150313
    fbapi20150629
    fbauth
    fbauth2
    fb-messenger-api20140430

如果使用 FBSDKMessengerShareKit,还要加上

fb-messenger-platform-20150128
fb-messenger-platform-20150218
fb-messenger-platform-20150305

 

如果使用SDK版本高于4.6,则只需要加上

LSApplicationQueriesSchemes

        fbapi
        fb-messenger-api
        fbauth2
        fbshareextension
IOS集成ShareSDK社会化分享 最近在应用中加入了分享功能,使用了ShareSDK v3.x,以下纪录了在工程中集成ShareSDK社会化分享的步骤。 开发环境:Xcode 7.3ShareSDK版本:v3.x ShareSDK官网上提供了快速即成的主要步骤,链接如下:http://wiki.mob.com/ios简洁版快速集成/。 阅读详情

相关推荐

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python &gt;= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

iOS9 URL Schme 白名单

原文地址:https://github.com/ChenYilong/iOS9AdaptationTips WWDC 2015 Session 703: "Privacy and Your App( 时间在30:18左右)关于URL scheme的介绍,指出: 也就是说:在iOS9中,如果使用canOpenURL:方法,该方法所涉及到的URL scheme必...

389

如何点亮一颗sensor

要点亮一个sensor需要从,时钟、sensorI2C,供电,reset脚,mipi的配置几个方面一一确认。 reset脚拉高 给sensor的时钟有没有。(目前用到的常为24MHZ) 供电 查看sensor的数据手册,看有几个电源,用示波器量一下是否为手册规定的电压 比如:DVDD 数字电压: AVDD模拟电压 DOVDD芯片引脚出来的电压等为多少。 sensor的I2C能否抓到 将I2C的口对应上,用示波器量取i2c的波形。 检查有应答并且数据正确。读写地址是否正...

weixin_40787463的博客 3647

【无标题】App iOS端适配iOS 15系统

各位好: App iOS端适配iOS 15系统,适配后将使用新的xcode 13打包提交App Store。 一、适配内容: 1、新增了iPhone 13 mini机型(尺寸同iPhone12 mini),5.4 英寸 (对角线) OLED 全面屏,屏幕分辨率为2340 x 1080 像素。如果是通过分辨率来判断则需要增加一个模式。 #define iPhone13mini ([UIScreen instancesRespondToSelector:@selector(currentMo

niejinhao052011的专栏 3116

BambuStudio学习笔记:GCode 类

关键成员解析 核心配置组件 状态跟踪系统 功能模块集成 核心方法剖析 主输出管道 实现多阶段处理: 分层处理流程: 实现智能路径规划: 关键特性: 实现模板故障检测: 采用三级流水线: 支持扩展类型: 实现多通道输出: 采用: 实现: 支持: 支持模块化编译: 典型流程: 实现功能:

zzzkk2009的专栏 932

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

从H100到770万GPU小时:手把手拆解LLaMA3训练背后的工程魔法与效率提升

本文深入解析了LLaMA3大模型训练背后的工程效率革命,揭示了如何通过硬件选型、并行策略和故障自愈等创新技术,在16000块H100 GPU上实现95%的有效训练时间。文章详细介绍了计算-通信重叠、三维并行架构和智能容错恢复等关键技术,为大规模AI模型训练提供了宝贵的工程实践启示。

weixin_30338481的博客 575

SpringBoot+Git+Jenkins+K8s容器化部署

SpringBoot+Git+Jenkins+K8s容器一套部署流程

可乐加.糖 471

iOS 15 部分第三方分享失败问题

起因 iOS 15之后,有一天测试找过来说,钉钉分享点击后直接提示“分享失败”,从头查了分享的注册、相关账号都发现没有什么问题。 原因 查阅苹果官方文档发现: 注意 iOS系统限制了配置的URL Scheme不可以超过50个。即info.plist文件中LSApplicationQueriesSchemes最多只能有50个,超出部分有可能不生效。尤其是Xcode13打包,iOS15.0及以上。 后续 后面经过测试又发现,QQ、QQ空间分享图片又失效了。查找QQ官方文档,是友盟文档中的白名单有问题,替换

假装自己很用心的博客 2814

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 420

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

关于iOS“白名单”的理解

之前一直误解LSApplicationQueriesSchemes“白名单”的概念:如果App1想要打开App2,必须把App2的URL scheme添加到App1的“白名单”中才能打开,这样理解是错误的。 官方文档: 说的是,在iOS9后,如果想要使用canOpenURL方法检查是否可以打这个URL或可以处理该URL的的App,需要在info.plist里添加LSApplicationQueriesSchemes字段来预设url,否则是否安装都会返回NO。 所以“白名单”的意义是要检查当前.

u013712343的博客 3931

【WRF数据准备】土地利用数据-MODIS MCD12Q1数据下载及制备

【WRF数据准备】MODIS静态地理数据下载及制备

WW、forever的博客 3413

ios 分享的白名单

<key>LSApplicationQueriesSchemes</key> <array> <!-- 微信 URL Scheme 白名单--> <string>wechat</string> <string>weixin</string> <!-- 新...

HumorousGhost 829

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

iOS 分享白名单

转载https://www.jianshu.com/p/8259240f296e?tdsourcetag=s_pctim_aiomsg &lt;key&gt;LSApplicationQueriesSchemes&lt;/key&gt; &lt;array&gt; &lt;!-- 微信 URL Scheme 白名单--&gt; &lt;string&gt;wecha...

chqj_163的专栏 439

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分享白名单

http://dev.umeng.com/social/ios/ios9 1.  HTTP传输安全 以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接: A、在info.plist中加入安全域名白名单(右键info.plist用source cod

smilebigdear的专栏 1929

iOS开发,使用友盟快速分享与第三方的白名单

官方说的比较详细,但是就是有些重复,而且有很多坑 坑1、集成后,打开app发现一堆问题(如下) **2016-02-02 10:43:48.978 MShow[778:259789] -canOpenURL: failed for URL: "weixin://app/wxd19e67a9eed31d47/" - error: "This app is not allowed to query

3995

iOS项目中的URL Schemes与白名单

在项目中对接支付、分享等第三方框架的时候,经常会用到URL Scheme和白名单等的配置,一直都是照着文档直接配置,没有理解它的作用。 最近写分享的时候分享静态页面,后台问我要一个iOS协议,用于跳转appstore的下载地址,没有搞明白就百度了一下,搜了很多文章,终于搞明白了它的作用。现在就来总结一下吧。URL Scheme是什么由于苹果的app都是在沙盒中,相互是不能访问数据的。但是苹果还是给...

weixin_34268753的博客 1077

ShareSDK——iOS端如何实现小红书分享

配置ShareSDK的AppKey和AppSecret,键分别为 MOBAppKey 和 MOBAppSecret ,值为之前在MobTech官网开发者后台申请的AppKey和AppSecret( 注意配置之后保存好,然后看项目的Info选项里有没有 )在左侧目录选中工程名,然后选择「TARGETS」>「Build Settings」>「Other Linker Flags」 ,在中「Other Linker Flags」 页面中添加-ObjC,字母 O 和 C 大写。

apkkkk的博客 3015

Ios swift 开发 使用ShardSDK 增加Facebook Twitter Instagram 分享功能

1. 在mob注册号后,按文档中心的说明文档在项目加进了sharedSDK http://wiki.mob.com/swift-调用-sharesdk/ 因为我们自己做UI , 也只加Facebook Twitter Instagram,所以这一步没有使用pod 而是下载了idk再按步骤操作 下载时只选了Facebook Twitter Instagram ,下载来后,将里面 有送UI的包删了

casun_li的专栏 2111

iOS 微信分享

iOS-微信-分享 Posted on 2016-08-25 18:24 iOS_满聪 阅读(6358) 评论(2)  编辑 收藏 一.微信原生的分享--准备工作. 1. 需要申请微信AppId. 2. 导入系统架包. SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h,WechatAuthSDK.四个. 3.导入必要的系统库.      S...

qq_41959835的博客 926

ShareSDK iOS端如何实现小红书分享

(1)初始化SDK在项目默认的plist文件里 配置ShareSDK的AppKey和AppSecret,键分别为 MOBAppKey 和 MOBAppSecret ,值为之前在MobTech官网开发者后台申请的AppKey和AppSecret( 注意配置之后保存好,然后看项目的Info选项里有没有 )(1)必须支持HTTPS,配置的paths不能带query参数,App配置的paths必须加上通配符/*点击 “+” 号,并在弹框里输入以下依赖库,进行添加。请登陆官网 ,找到SDK下载,勾选需要的平台下载。

apkkkk的博客 1925

解决IOS9友盟分享时明明安装了相关的分享软件,却提示未安装的问题

升级iOS9以后,出现了一个问题:之前做好的能正常使用的友盟微信分享现在无法使用了,明明已经安装开启了微信,却睁眼说瞎话说没有安装。 可是我确实是明明安装并且开启了微信的,后来查阅相关资料才知道,这是由于近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。受此影响,当你的应

Vincent_Weiqing.Li的博客 4895

iOS开发-shareSDK 微信好友朋友圈分享

1、需要在指定官网注册App,并获取AppKeyhttps://open.weixin.qq.com/cgi-bin/appdetail?t=manage/detail&amp;type=app&amp;lang=zh_CN&amp;token=a80628f45e29c6e2d48fcb6ddc89ae07eb72b96a&amp;appid=wx2e6d2fa4ffc9dc9a支持微信所需的相...

Zhai19931004的博客 2228

iOS开发 微信SDK的分享功能

1.首先下载微信SDK:微信SDK下载地址(更多关于微信SDK信息文档请访问官方网站:微信开放平台) 2.导入微信SDK 将下载下来的SDKExport文件夹导入到工程,其中包含3个核心文件libWeChatSDK.a WXApi.h WXApiObject.h(强烈建议大家看看read-me文件) 3.在工程Build Phases -> Link Binary Wit

NLZhang的博客 3443
上一篇: 从相册中取出gif图片
ciwei_numberOne
博客等级 码龄12年 5粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值