ios9适配

一、网络适配由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空间白名单:mqzoneopensdk、mqzoneopensdkapi、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缺一不可。

时间: 2024-10-24 19:35:13

ios9适配的相关文章

整理iOS9适配中出现的坑(图文)

整理iOS9适配中出现的坑(图文) 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输

iOS9系列专题6——iOS9其他适配注意点

iOS9适配注意点 一.后台定位类app适配点         在iOS8中,APP的定位服务apple就做了一些修改,需要用户申请相应的权限,并在info.plist文件中添加对应的键值.具体的做法在这篇博客中有详细的讲解:http://my.oschina.net/u/2340880/blog/414760.         在iOS9系统中,定位服务的做法基本没有改变,对于前台的定位没有影响,但app中如果需要后台定位,那么还需要多做一些操作,例如: ? 1 2 3 4 5 6 7 8 9

Android 支付宝支付以及微信支付

问题描述 Android 支付宝支付以及微信支付 小弟新人,接触android时间不是很长,最近项目需要用到支付宝支付和微信支付,怎么搞啊,以前从来没接触过,该怎么入手呢?有木有哪位大神能给个Demo或者告诉我应该怎样学习,谢谢!! 解决方案 MD5加密支付宝支付与微信支付ios9适配 微信支付/支付宝支付iOS9 微信支付支付宝支付适配 解决方案二: 让公司申请账号,照着文档和demo做就行了 解决方案三: 可以不要求公司给你申请账号,用自己的开发者账号的秘钥给公司的项目用.这样可以有效报复外

iOS开发:服务器到客户端对ATS的适配

  一.简单谈谈ATS(App Transport Security) ATS(App Transport Security)是为了提高App与服务器之间安全传输数据一个特性,这个特性从iOS9和OSX10.11开始出现,它默认需要满足以下几个条件: 服务器TLS版本至少是1.2版本 连接加密只允许几种先进的加密 证书必须使用SHA256或者更好的哈希算法进行签名,要么是2048位或者更长的RSA密钥,要么就是256位或更长的ECC密钥. 如果想了解哪几种先进的加密是被允许的,详情请见官方文档A

iOS10 适配 ATS(app支持https通过App Store审核) 韩俊强的博客

一. HTTPS 其实HTTPS从最终的数据解析的角度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全:而对于接收端,在SSL/TSL将接收的数据包解密之后,将数据传给HTTP协议层,就是普通的HTTP数据.HTTP和SSL/TSL都处于OSI模型的应用层.从HTTP切换到HTTPS是一个非常简单的过程,在做具体的切换操作之前,我们需要了解几个概念: SSL/TLS 为了保证这些隐私数据能加密传

iOS9完美伴侣易信3.8新版上线App Store

本文讲的是 :  iOS9完美伴侣易信3.8新版上线App Store  , 易信3.8版本于近日发布,新版本全面适配iOS9并针对苹果用户进行了多项功能优化.在群管理.自定义表情.星币广场.消息列表.青果摄像机等多方面,新版易信都有精心设计的细节提升,在初秋时节带给用户暖心体验. 易信3.8版,与iOS9的完美邂逅 此次全新推出的易信3.8版本将完美适配iOS9,已经或想要升级最新iOS系统的果粉们也可以安心地下载尝鲜,不用担心出现APP与手机系统不匹配的问题.新版易信还为iPhone.iPa

iOS8到iOS9 变化笔记

iOS8到iOS 9 变化笔记  这里将介绍下我们日常开发一些从iOS8过度到iOS9给我们带来的一些变化,及解决方法.  一.信息收集  language:zh-Hans(iOS8) --> zh-Hans-CN(iOS9) 所有的进程列表都获取不到了 二.App Transport Security  iOS9和OS X El Capitan的一个新特性,App Transport Security 的目地是提高Apple 操作系统的安全性以及在此操作系统上运行的任何应用的安全性.ATS是苹

iOS 9适配系列教程:后台定位

[iOS9在定位的问题上,有一个坏消息一个好消息]坏消息:如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!好消息:将允许出现这种场景:同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位. 如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条: 如何偷偷在后台定位:请求后台定位权限: // 1. 实例化定位管理器  _locationManager = [[CLLoca

110.iOS10新特性适配教程XCode8新特性解析_IOS

iOS10 新特性 SiriKit SiriKit的功能非常强大,支持音频.视频.消息发送接收.搜索照片.预订行程.管理锻炼等等.在用到此服务时,siri会发送Intent对象,里面包括用户的请求和各种数据,可以对这个intent处理选择适当的响应. 这个功能主要是看这两个头文件(#import Proactive Suggestions 系统预先建议 背景就是iOS9的时候系统给予的主动建议会通过:Spolight搜索,Safari搜索,Handoff,或者siri建议. 在iOS10之后新增