iOS 9 工程配置注意事项

来源:互联网 发布:创建文件夹没权限linux 编辑:程序博客网 时间:2024/05/27 09:44

一、http 与 https的问题
iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输。直接造成的情况就是App发请求的时候弹出网络无法连接。解决办法就是在项目的info.plist 文件里加上如下节点:


NSAppTransportSecurity
Https配置

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

三、企业证书打包ipa安装后信任问题
这一条只和企业级应用或inhose 有关,和AppStore渠道的应用无关。

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

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

在iOS8并没有做过多限制,但是iOS9需要将你要在外部调用的URL scheme列为白名单,才可以完成跳转;如果iOS9没做适配 会报错误;
具体的解决方案也是要在info.plist中设置 LSApplicationQueriesSchemes 类型为数组,下面添加所有你用到的scheme

五、statusbar
以前我们为了能够实时的控制顶部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;}

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

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

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

解决的方法是,注释[tableView reloadData],改用局部刷新。

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

八、ActionSheet
Actionsheet 在iOS8的时候改了一次版,当时是和AlertView二合一,并且以AlertViewController作为载体,之后再present出来,这在当时,苹果应该是想统一各个控件的展示方式,但是很多人可能并没有在意因为直接show那个方法并没有废除,大家都觉得应该是新旧都能用,再加上有的公司可能自己还做了一定扩展,诸多原因导致还是用的旧方法。

原文:http://www.cnblogs.com/dsxniubility/p/4821184.html

0 0