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简洁版快速集成/。 阅读详情

相关推荐

Dify与钉钉轻量级集成:打造企业内部AI助手

企业级聊天机器人开发已成为提升内部协同效率的关键技术。其核心原理在于通过API集成,将AI模型能力与即时通讯平台无缝连接,实现智能问答与自动化流程。从技术价值看,这种集成方案能够显著降低AI应用落地门槛,将前沿的AI能力快速转化为实际生产力。在应用场景上,它尤其适用于HR答疑、IT技术支持、产品知识库等高频内部服务场景。本文聚焦于Dify与钉钉的轻量级集成方案,通过Stream模式实现高效消息处理,并利用AI卡片支持流式输出,为企业构建体验自然的智能机器人提供了完整实践路径。该方案特别强调配置简化与部署便捷

weixin_27155667的博客 696

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

pytorch图像分类篇: 花分类数据集下载和AlexNet网络搭建训练

一、花分类数据集下载 data_setdata_set该文件夹是用来存放训练数据的目录 使用步骤如下: (1)在data_set文件夹下创建新文件夹"flower_data" (2)点击链接下载花分类数据集 (3)解压数据集到flower_data文件夹下 (4)执行"flower_data.py"脚本自动将数据集划分成训练集train和验证集val ├── flower_data ├── flower_photos(解压的数据集文件夹,3670个样本) ...

橙子的博客 8218

【无标题】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

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 570

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

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

weixin_30338481的博客 575

✔B【AD623】【单运放】仪表放大器 AD623电压放大器模块可调 单电源 单端/差分 微小信号

【】仪表放大器 AD623电压放大器模块可调 单电源 单端/差分 微小信号

童话与梦的博客 8280

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

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

假装自己很用心的博客 2814

(Linux)DHCP 超级作用域和中继代理(超难受做了超久)

DHCP服务器在192.168.159.0 可以实现分配IP的功能,现在要跨网段分配IP 就需要用到DHCP中继代理。中继代理有两张网卡分别eth0:IP 192.168.159.2 ;eth1: IP:192.168.200.2 。现在要实现192.168.200.0网段的客户机可以获取DHCP服务器的IP。中继代理其实是相当于一个路由器的作用 DHCP服务器的IP地址 :192.168.159...

DJ_joker的博客 2225

文石NoteX3国行版安装 Google Play经验分享

文石NoteX3国行版安装 Google Play经验分享。

2301_80693261的博客 7599

关于iOS“白名单”的理解

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

u013712343的博客 3931

Plant Simulation 双深位立库开发系列教程-货架参数化

为了方便用户进行货架参数化,我们需要在交互界面上进行参数调整,右键打开RackLane,打开Dialog,在Rack_tab的tab下创建相应的对象,并创建NumberOfRightRack和NumberOfLeftRack作为数据连接对象。通过Rack._3D.VisibleGraphicGroups := ["default"]来切换需要显示的Rack,当不需要显示则可以Rack._3D.VisibleGraphicGroups := [""]即可。首先,加载默认的HBW库到模型中,确保结构树当中有。

santayana的专栏 1257

ios 分享的白名单

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

HumorousGhost 829

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

分享白名单

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

smilebigdear的专栏 1929

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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的博客 3014

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、付费专栏及课程。

余额充值