ios15 beta2什么时候出(xsmax ios15建议更新吗)

技术iOS 9适配中会遇到的问题有哪些这篇文章主要介绍iOS 9适配中会遇到的问题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、NSAppTransportSecurityiOS9让所有

本文主要介绍iOS 9适配中遇到的问题。很详细,有一定的参考价值。感兴趣的朋友一定要看完!

一、NSAppTransportSecurity

IOS9默认让所有HTTP使用HTTPS,将原来的HTTP协议传输改为TLS1.2协议进行传输。直接的结果是,当App发送请求时,弹出的网络无法连接。解决方案是将以下节点添加到项目的info.plist文件中:

iOS  9适配中会遇到的问题有哪些

NSAppTransportSecurity - NSAllowsArbitraryLoads

这个子节点的意思是:允许任意加载吗?如果设置为“是”,将禁用AppTransportSecurity,而是使用用户定义的设置,这个问题将得到解决。

上面说苹果已经限制了HTTP协议,但这并不意味着所有HTTPS人都能* * *适应iOS9。

吃个栗子。webView从应用程序中加载https页面。一个从页面代码中写几行的新项目。

-(void)load view { UIWebView * web=[[UIWebView alloc]initwithframe :[UIScreenmainScreen]。界限];self.view=web}-(void)viewDidLoad {[superviewdiload];UIWebView * web=(UIWebView *)self . view;//Dong Boran NSURL * URL=[nsurltering : @ ' 3359 github.com/'];NSURLRequest * request=[nsurlrequestwithourll : URl];[WebLoadRequest : request];}中间的url是我们要加载的https地址。分别试试https://baidu.com/和https://github.com/,结果不一样。

iOS  9适配中会遇到的问题有哪些

Github的网页可以打开,百度的网页却打不开。下面打印了一行日志。

nurlsesession/Nurlconnectionhttploadfailed(KCfstream error domainssl,-9802)原因是苹果官方信息说必须先基于TLS 1.2版协议。那么,证书的加密算法也需要SHA256或更高版本的RSA密钥或ECC密钥。如果不匹配,请求将被中断并返回零。

在浏览器中,可以直接查看本网站的加密算法。首先单击绿色锁,然后单击证书信息。

iOS  9适配中会遇到的问题有哪些

从右边两张图可以看出,采用RSA加密的github SHA-256符合苹果的要求,所以可以展示。

根据百度的情况,可以在info.plist中进行如下配置,如果网站引用比较多,应该针对每个网站进行配置。

iOS  9适配中会遇到的问题有哪些

NSAppTransportSecurity、NSExceptionDomains、NSIncludesSubdomains、nsexceptionrequires forwards research、nsexceptionalwensurehttpads写在下面是为了方便复制。

ForwardSecrecy被理解为一种高级密码保护算法,写在官方数据中,总共有11种。配置后百度可以访问。

iOS  9适配中会遇到的问题有哪些

二、Bitco

de

bitcode的理解应该是把程序编译成的一种过渡代码,然后苹果再把这个过渡代码编译成可执行的程序。bitcode也允许苹果在后期重新优化我们程序的二进制文件,有类似于App瘦身的思想。

用了xcode7的编译器编译之前没问题的项目可能会出现下列报错。

XXXX’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

问题的原因是:某些第三方库还不支持bitcode。要不然是等待库的开发者升级了此项功能我们更新库,要不就是把这个bitcode禁用。

禁用的方法就是找到如下配置,选为NO.(iOS中bitcode是默认YES,watchOS中bitcodes是不让改的必须YES。)

iOS 9适配中会遇到的问题有哪些

三、设置信任

这一条只和企业级应用或inhose 有关,和AppStore渠道的应用无关。

在iOS8只是弹出一个窗问你是否需要让手机信任这个应用,但是在iOS9却直接禁止,如果真的想信任需要自己去手动开启。类似于Mac系统从未知开发者处下载的dmg直接打不开,然后要到系统偏好设置的安全性与隐私手动打开。 下图展示左边iOS8,右边iOS9

iOS 9适配中会遇到的问题有哪些

用户需要去 设置---》通用---》描述文件 里面自行添加信任。

这种问题的处理方法也就两种:1.提前周知暂时不要升级iOS9  2.大多是公司员工使用的企业级应用,群发一个指导邮件。

四、字体

iOS8中,字体是Helvetica,中文的字体有点类似于“华文细黑”。只是苹果手机自带渲染,所以看上去可能比普通的华文细黑要美观。iOS9中,中文系统字体变为了专为中国设计的“苹方” 有点类似于一种word字体“幼圆”。字体有轻微的加粗效果,并且最关键的是字体间隙变大了!

所以很多原本写死了width的label可能会出现“...”的情况。

iOS 9适配中会遇到的问题有哪些

上面这两张图也可以直观的看出同一个界面,同一个label的变化。

所以为了在界面显示上不出错,就算是固定长度的文字也还是建议使用sizetofit 或者ios向上取整 ceilf() 或者提前计算

CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}]; CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));

五、URL scheme

URL scheme一般使用的场景是应用程序有分享或跳其他平台授权的功能,分享或授权后再跳回来。

在iOS8并没有做过多限制,但是iOS9需要将你要在外部调用的URL scheme列为白名单,才可以完成跳转

如果iOS9没做适配 会报如下错误

canOpenURL: failed for URL : "mqzone://qqapp" - error: "This app is not allowed to query for scheme mqzone"

具体的解决方案也是要在info.plist中设置 LSApplicationQueriesSchemes 类型为数组,下面添加所有你用到的scheme

iOS 9适配中会遇到的问题有哪些

六、statusbar

这个还好只是报一个警告,如果就是不管他,也不会出现问题。

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

以前我们为了能够实时的控制顶部statusbar的样式,可能会在喜欢使用

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent] [[UIApplication sharedApplication]setStatusBarHidden:YES];

但是这么做之前需要将 info.plist 里面加上View controller-based status bar appearance  BOOL值设为NO,就是把控制器控制状态栏的权限给禁了,用UIApplication来控制。但是这种做法在iOS9不建议使用了,建议我们使用吧那个BOOL值设为YES,然后用控制器的方法来管理状态栏比如。

- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }

点进头文件可以验证刚才说法:

@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]");

七、didFinishLaunchingWithOptions

如果运行的时候报下列错误,那就是你的didFinishLaunchingWithOptions写的不对了

***** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**

iOS9不允许在didFinishLaunchingWithOptions结束了之后还没有设置window的rootViewController。 也许是xcode7的编译器本身就不支持。

解决的方法当然就是先初始化个值,之后再赋值替换掉

UIWindow *window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; window.rootViewController = [[UIViewController alloc]init];

八、tableView

虽然现在的iOS9已经推送正式版了,但是iOS9使用时还是会感觉到App比以前更加卡顿了,tableView拖动时卡顿显示的最为明显。 并且之前遇到一个bug,原本好的项目用xcode7一编译,tableView刷新出了问题 ,[tableView reloadData]无效 有一行cell明明改变了但是刷新不出来。 感觉可能是这个方法和某种新加的特性冲突了,猜测可能是reloadData的操作被推迟到下一个RunLoop执行最终失效。

解决的方法是,注释[tableView reloadData],改用局部刷新,问题居然就解决了。

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];

以上是“iOS 9适配中会遇到的问题有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157463.html

(0)

相关推荐

  • zookeeper小工具zkui怎么用

    技术zookeeper小工具zkui怎么用本篇文章给大家分享的是有关zookeeper小工具zkui怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。回顾

    攻略 2021年11月12日
  • 晚安和安哪个更亲密,晚安和安有什么大的区别吗

    技术晚安和安哪个更亲密,晚安和安有什么大的区别吗晚安和安晚安和安哪个更亲密,从字面上理解都是一样的意思。 晚安:晚上向人问候礼貌用语或者晚上睡觉之前的温馨用语。 安:现代年轻人常用语,是晚安的省略版。 有更亲昵的成份。多

    生活 2021年10月23日
  • BUUCTF RE CrackRTF

    技术BUUCTF RE CrackRTF BUUCTF RE CrackRTFBUUCTF RE CrackRTFint __cdecl main_0(int argc, const char **ar

    礼包 2021年12月9日
  • esp32使用光敏传感器实现LED灯的亮暗线性调节

    技术esp32使用光敏传感器实现LED灯的亮暗线性调节 esp32使用光敏传感器实现LED灯的亮暗线性调节LED灯接ESP32的18口和GND。
    光敏传感器VCC接3.3,GND接GND,DO不接,AO

    礼包 2021年11月11日
  • Mysql的卸载过程是怎么样的

    技术Mysql的卸载过程是怎么样的Mysql的卸载过程是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。引言很多人因为第一次安装mysql导致安装

    攻略 2021年10月25日
  • C/C++ Qt数据库SqlRelationalTable关联表怎么使用

    技术C/C++ Qt数据库SqlRelationalTable关联表怎么使用本篇内容介绍了“C/C++ Qt数据库SqlRelationalTable关联表怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样

    攻略 2021年12月10日