iOS9适配http,微信、qq、支付宝添加白名单

2023-12-09 13:33

本文主要是介绍iOS9适配http,微信、qq、支付宝添加白名单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、网络适配由http改成https

    苹果官方对App Transport Security Technote的解释如下:

技术分享

    翻译成中文的意思就是说:iOS9.0SDK在编译的时候,默认所有从NSURLConnection、CFURL和NSURLSession发出的http请求,都改为https请求。由于AFNetworking版本底层是用了NSURLConnection,所以使用AFNetworking的app都将受到影响。对于这个问题的解决办法有三种,一:让服务器更新,使用https,以解析相关的数据。二:在info.plist做些配置,让其暂时倒回到不安全的网络传输协议(http协议)。下面详细来说下这两种方案。三:设置域,也就是把不支持https协议的接口设置成http的接口。

    方案一:让服务器更新。

    第一种方案是最佳的,因为使用http的话,会存在以下主要风险:

    1、窃听风险:第三方可以获得通信内容。

    2、篡改风险:第三方可以修改通信内容。

    3、冒充风险:第三方可以冒充他人来进行通信。

    而使用https所带给我们的好处如下:

    1、所有信息都是加密传播,第三方无法窃取。

    2、具有校验机制,一旦通信内容被篡改,通信双方可以立即发现。

    3、配备身份证书,防止他人冒充。

    但是就目前情况来看,让服务器更新的代价太大,大的公司应该很大可能会让服务器更新,一般公司会采用第二种方案。

    方案二:暂时倒回到不安全的网络传输协议(http协议)

    (1)、在info.plist中增加一个NSAppTransportSecurity字段,类型是字典。

    (2)、然后给其增加一个Key:NSAllowsArbitraryLoads,类型是Boolean类型,值为YES。

技术分享

    方案三:设置域(把把不支持https协议的接口设置成http的接口

    (1)、在info.plist中增加一个key:NSAppTransportSecurity,类型为字典类型。

    (2)、然后添加一个NSExceptionDomains,其类型是字典类型。

    (3)、把需要支持的域给添加到NSExceptionDomains里,其中域作为key,类型为字典类型。

    (4)、每个域下面需要设置3个属性,分别为NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads,均为Boolean类型,其值分别为YES,NO,YES。技术分享

    新浪微博的域:weibo.com、weibo.cn、sina.com.cn。微信的域:qq.com。QQ/QZone的域:qq.com
二:Bitcode

    先看下Apple对其的解释,如图:

Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect 
that contain bitcode will be compiled and linked on the App Store. Including bitcode will allow Apple 
to re-optimize your app binary in the future without the need to submit a new version of your app to 
the store.

    翻译成中文的意思就是,Bitcode是被编译程序的一种中间形式的代码。包含Bitcode配置的应用将在App Store上被编译和链接。Bitcode允许苹果在后期重新优化我们应用的二进制文件,而不需要我们重新提交一个版本到App Store上。

Note: For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and 
frameworks in the app bundle need to include bitcode. For watchOS apps, bitcode is required.

    翻译成中文的意思就是,如果用Xcode7创建的app默认是包含有bitcode,但是是可以选择的。如果,我们的app包含了bitcode,我们工程中所有的第三方sdk必须也得支持bitcode,否则的话,就会报错误的。错误如下:

技术分享

    解决这个错误,有两种方案:

    方案一:把不支持Bitcode的SDK给移除掉,等待第三方更新SDK。而目前大部分社交平台的SDK并不支持Bitcode。

    方案二:把Bitcode给关闭掉,方法如下:

技术分享

    那么使用bitcode会给我们带来什么好处呢?苹果为什么要引入bitcode呢?其实引入bitcode的主要作用是给app瘦身,官方解释如下:

Slicing is the process of creating and delivering variants of the app bundle for different target 
devices. A variant contains only the executable architecture and resources that are needed for the 
target device. You continue to develop and upload full versions of your app to iTunes Connect. The 
App Store will create and deliver different variants based on the devices your app supports. Image 
resources are sliced according to their resolution and device family. GPU resources are sliced 
according to device capabilities. When the user installs an app, a variant for the user’s device is
downloaded and installed.Xcode simulates slicing during development so you can create and test variants locally. Xcode slices 
your app when you build and run your app on a device. When you create an archive, Xcode includes the 
full version of your app but allows you to export variants from the archive.

    当前app的打包方式是把适配兼容多个设备的执行文件与资源文件合并成一个文件,上传和下载的文件则包含了所有的这些文件,导致占用较多的存储空间。

    app瘦身就是让iOS设备在安装、更新以及运行app等场景中仅下载所需的资源,从而节省设备的存储空间。通过下面这张图,可以让我们很容易明白其中的原理,如图:

技术分享

    根据官方的解释,主要有以下三个方面:

    1、Slicing 

    当把app打包上传到AppStore的时候,服务器会自动对包切割为不同的应用变体,当用户下载安装包的时候,系统会根据设备型号下载对应的应用变体。如上图所示。

    2、Bitcode

    开启bitcode编译后,可以让开发者上传app只需要上传中间二进制文件,而非最终的可执行二进制文件。在用户下载app之前,AppStore会自动编译中间二进制文件,从而生成可执行的二进制文件。

    3、On-Demand Resources

    所需资源是指开发者对资源添加标签上传后,系统会根据app运行的情况,动态下载并加载所需资源,如果存储空间不足时,自动删除这些资源。

三:Scheme白名单

    从iOS9.0后,涉及到平台客户端的跳转,系统会自动到info.plist下检查是否设置Scheme。如果没有做相应的配置,就无法跳转到相应的客户端。因此如果客户端集成有分享与授权,需要配置Scheme白名单。

    解决方案:

    (1)、在info.plist增加key:LSApplicationQueriesSchemes,类型为NSArray。

    (2)、添加需要支持的白名单,类型为String。

技术分享

    新浪微博白名单:sinaweibo、sinaweibohd、sinaweibosso、sinaweibohdsso、weibosdk、weibosdk2.5。

    微信白名单:wechat、weixin。

    支付宝白名单:alipay、alipayshare。

    QQ与QQ空间白名单:mqzoneopensdkmqzoneopensdkapi、mqzoneopensdkapi19、mqzoneopensdkapiV2、mqqOpensdkSSoLogin、mqqopensdkapiV2、mqqopensdkapiV3、wtloginmqq2、mqqapi、mqqwpa、mqzone、mqq

    另外,如果应用使用了检测是否安装了某款app,我们会调用canOpenURL, 如果url不在白名单中,即使手机上有这款app,也会返回NO。

    补充:在使用sharesdk进行分享的时候,如果你设置有微信、QQ、QQ空间分享,并且你也把相应的白名单给添加进去了,但是如果你手机上没有装QQ的时候,也是不会出现分享到QQ的选项。

四:iPad适配Slide Over和Split View

    若想适配multi tasking特性,建议不使用纯代码,改用storyboard、xib的形式。

补充,本文所说的都是iOS9.0SDK的新特性,如果你的app版本是基于iOS8.X、iOS7.X,并不受iOS9.0新特性约束。也就是说Xcode7给iOS8.X打设备包不需要白名单也能调用canOpenURL,但是Xcode7给iOS9.X打包则需要,Xcode7和iOS9缺一不可。

技术分享

iOS9.0

 
width="336" height="280" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_0" name="aswift_0" style="padding: 0px; left: 0px; position: absolute; top: 0px;">
width="336" height="280" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_1" name="aswift_1" style="padding: 0px; left: 0px; position: absolute; top: 0px;">

width="300" height="600" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_2" name="aswift_2" style="padding: 0px; left: 0px; position: absolute; top: 0px;">
分享档案
更多>
2015年09月24日 (196)
2015年09月23日 (1855)
2015年09月22日 (1901)
2015年09月21日 (1926)
2015年09月20日 (1587)
2015年09月19日 (1453)
2015年09月18日 (1665)
2015年09月17日 (2156)
2015年09月16日 (1952)
2015年09月15日 (2094)
周排行
mamicode.com排行更多图片
更多
  • Mac下获取AppStore安装包文件路径  2015-03-11
  • 安装android studio报错Failed to install Intel HAXM.  2015-06-25
  • iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法  2015-02-09
  • Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)  2015-03-12
  • 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)  2014-08-06
  • 关于iOS9中的App Transport Security相关说明及适配  2015-08-19
  • Android Studio 连接真机不识别  2015-02-11
  • 小米手环 / 运动手环 记步功能原理  2015-03-01
  • 浅谈h5移动端页面的适配问题  2015-03-14
  • Android Studio 安装及常见问题  2015-02-17
width="300" height="250" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_3" name="aswift_3" style="padding: 0px; left: 0px; position: absolute; top: 0px;">
id="cproIframe_u2208973_3" width="300" height="300" src="http://pos.baidu.com/acom?adn=3&adp=1&at=0&aurl=&c01=1&cad=1&ccd=24&cec=UTF-8&cfv=18&ch=0&col=zh-cn&conBW=1&conOP=1&cpa=1&dai=3&dis=0&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DGK3tIQXKm02hIKMkNS_YeNoCOK47C6nelCsJHUBRuLVnEpjHrLJDs8m-vPWFvjD0PX0xKVn0NR0S6dJqTF22ma%26wd%3D%26eqid%3D93defcf10000023b0000000556035b2f&ltu=http%3A%2F%2Fwww.mamicode.com%2Finfo-detail-1049462.html&lu_161=0&lunum=6&n=65035100_cpr&pat=17&pcs=1824x995&pis=10000x10000&ps=2042x1112&psr=1920x1080&pss=1824x6714&ptt=0&qn=11458bb59d4cefb4&rad=&rsi0=300&rsi1=300&rsi5=4&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%23000000&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=tabcloud_skin_3&stid=5&td_id=2208973&titFF=%E5%AE%8B%E4%BD%93&titFS=14&titSU=0&titTA=left&tn=baiduCustNativeAD&tpr=1443060537499&ts=1&version=2.0&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u2208973&ti=iOS9.0%E9%80%82%E9%85%8D&tt=1443060537482.1339.1470.1470" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="padding: 0px;">

这篇关于iOS9适配http,微信、qq、支付宝添加白名单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473885

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

负债不再是障碍?银行信贷“白名单“揭秘

谈及银行信贷产品,常闻有言称存在无需考量负债与查询记录之奇品,此等说法十有八九为中介诱人上钩之辞。轻信之下,恐将步入连环陷阱。除非个人资质出类拔萃,如就职于国央企或事业单位,工龄逾年,五险一金完备,还款能力卓越,或能偶遇线下产品对查询记录稍显宽容,然亦非全然无视。宣称全然不顾者,纯属无稽之谈。 银行非慈善机构,不轻易于困境中援手,更偏爱锦上添花之举。若无坚实资质,即便求助于银行亦难获青睐。反

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Java http请求示例

使用HttpURLConnection public static String httpGet(String host) {HttpURLConnection connection = null;try {URL url = new URL(host);connection = (HttpURLConnection) url.openConnection();connection.setReq