zoukankan      html  css  js  c++  java
  • 第三十一篇、iOS 9版本适配

    1.网络适配(强制回退HTTP)

      为了强制增强数据访问安全, iOS9 默认会把 所有的http请求 所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1.2 协议。因为 AFNetworking 现在的版本底层使用了 NSURLConnection ,众多App将被影响(基于iOS8.x-SDK的App不受影响)。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。而这一做法,官方文档称为ATS,全称为App Transport Security,是iOS9的一个新特性。

    2.后台定位

     // 1. 实例化定位管理器
    _locationManager = [[CLLocationManager alloc] init];
    // 2. 设置代理
    _locationManager.delegate = self;
    // 3. 定位精度
    [_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    // 4.请求用户权限:分为:①只在前台开启定位②在后台也可定位,
    //注意:建议只请求①和②中的一个,如果两个权限都需要,只请求?即可,
    //①②这样的顺序,将导致bug:第一次启动程序后,系统将只请求①的权限,②的权限系统不会请求,只会在下一次启动应用时请求?
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
        //[_locationManager requestWhenInUseAuthorization];//?只在前台开启定位
        [_locationManager requestAlwaysAuthorization];//?在后台也可定位
    }
    // 5.iOS9新特性:将允许出现这种场景:同一app中多个location manager:一些只能在前台定位,另一些可在后台定位(并可随时禁止其后台定位)。
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
        _locationManager.allowsBackgroundLocationUpdates = YES;
    }
    // 6. 更新用户位置
    [_locationManager startUpdatingLocation];

    3.企业级分发(如果不信任证书,应用不可以使用,注意:服务器上的Bundle id 要设置和项目中的一样,不然不可以下载)

    4.添加信任的白名单(不信任则第三方的分享不可以使用)

    5.字体间隙变大UI异常(在ios8显示完全,当时一到ios9中就显示不全)

    CGSize size = [title sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:14.0f]}];
    CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
  • 相关阅读:
    Django-model基础
    web框架
    django-MTV
    我与前端之间不得不说的三天两夜之jQuery
    vertical-align和line-height的深入应用
    我与前端之间不得说的三天两夜之css基础
    mysql数据库从删库到跑路之mysql:视图、触发器、事务、存储过程、函数
    我与前端之间不得不说的三天两夜之html基础
    hdu2206 IP地址的计算
    get方式中文乱码解决方法
  • 原文地址:https://www.cnblogs.com/HJQ2016/p/5884734.html
Copyright © 2011-2022 走看看