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
     manager = [[CLLocationManager alloc]init];
     //申请后台定位权限
     [manager requestAlwaysAuthorization];
     manager.delegate=self;
     //=======================================
     //下面这个是iOS9中新增的方法 开启后台定位
     manager.allowsBackgroundLocationUpdates = YES;
     //======================================
     [manager startUpdatingLocation];

通过上面简单的配置直接运行的话,程序会崩溃掉,还需要在plist文件中做一些配置,两种方式:

方式一:直接在plist文件中配置如下:

方式二:在项目中设置

打开background Models选项,勾选其中的Location updates。

二、安装不受信任的开发者应用

        我们知道,在Xcode7后,开发者可以不用花99dollars去购买开发者账号而可以在自己的iphone上进行测试。在安装这些应用时,iOS9系统不再向以前那样,再安装时提示一个信任的按钮,而是做如下的提示:

在设置中,选择描述文件:

之后选择开发者对应的appleId,选择信任即可:

          

三、BitCode的配置

        BitCode是app的一种中间形式,在iOS9系列专题的前几篇,有对其的简单介绍,举个例子,我们可以在提交app时提交app的bitcode形式,如此一来,apple会对我们的app进行二次优化,在用户下载时根据所需再进行编译打包。在Xocde7中,新建的项目是默认开启BitCode的,如果我们用Xcode7编译提交应用,这里有需要注意适配的地方。

        如果要支持BitCode,需要保证所有的SDK都支持BitCode,如果要更新旧的SDK,只需要在Xcode7上开启BitCode重新制作一遍即可。

        如果不能使所有SDK都支持BitCode,可以在项目中关闭BitCode,在building Setting中搜索BitCode,将enable设置为NO,如下:

四、URL Scheme白名单

        在iOS9中,apple引入了白名单这个概念,其好处是对app应用内安全进行了加强。在iOS9的适配中,如果我们用到canOpenURL这样的方法,则需要配置白名单。

首先,我们创建一个测试工程,什么都不用做,只需要添加一个URL Scheme:

在另一个工程中,我们写如下代码:

?
1
2
3
  BOOL  can= [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@ "TEST://" ]];
     NSLog(@ "%d" ,can);
     [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@ "TEST://" ]];

在没有配置白名单之前,打印如下:

可以看到,bool值返回的是NO。虽然这样也可以跳转相应的APP,但是canOpenURL这个方法相当于失效了,我们不能用它来判断用户到底装没装这个app。

适配时,我们在plist文件中添加如下键值:

这时再次运行程序,canOpenURL的判断就会准确了。

注意:白名单添加上限为50个。

五、label默认字体不同产生的BUG

        iOS9的另一变化是label的默认字体产生了变化,我们打印iOS9中label的字体如下:

iOS8中的label默认字体如下:

这两种字体的最大差异是字间距不同,例如如下一段代码:

?
1
2
3
4
5
     UILabel * label = [[UILabel alloc]init];
     label.frame=CGRectMake(100, 100, 100, 30);
     [self.view addSubview:label];
     label.backgroundColor= [UIColor redColor];
     label.text=@ "1111111111111" ;

这段代码在iOS9上是刚好可以正常显示的,在iOS8上则不行,如下:

iOS9:

iOS8:

适配注意点:

1、可以通过动态计算来获取label的宽度,进行设置label的宽度

2、一个更简单的方法是通过设置一个确定的字体,来进行适配

目录
相关文章
|
8月前
|
IDE API Android开发
安卓与iOS开发环境的差异及适配策略
在移动应用开发的广阔舞台上,Android和iOS两大操作系统各据一方,各自拥有独特的开发环境和工具集。本文旨在深入探讨这两个平台在开发环境上的关键差异,并提供有效的适配策略,帮助开发者优化跨平台开发流程。通过比较Android的Java/Kotlin和iOS的Swift/Objective-C语言特性、IDE的选择、以及API和系统服务的访问方式,本文揭示了两个操作系统在开发实践中的主要分歧点,并提出了一套实用的适配方法,以期为移动开发者提供指导和启示。
|
10月前
|
iOS开发
SwiftUI适配iOS16导航控制器引起的闪退
SwiftUI适配iOS16导航控制器引起的闪退
103 0
|
10月前
|
监控 iOS开发
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
iOS15适配问题:viewForSupplementaryElementOfKind表头和表尾复用闪退,UITableView section header多22像素等问题
163 0
|
小程序 开发工具 Android开发
Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!
310 0
Donut多端框架小程序打包适配ios和安卓app
|
安全 前端开发 开发工具
iOS12、iOS11、iOS10、iOS9常见适配
iOS12、iOS11、iOS10、iOS9常见适配
273 0
|
小程序 iOS开发
uniapp中IOS端小程序底部黑线适配的方法(整理)
uniapp中IOS端小程序底部黑线适配的方法(整理)
|
开发工具 iOS开发 开发者
iOS 暗黑模式的适配总结
iOS 暗黑模式的适配总结
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
247 0
iOS小技能:下拉刷新控件的适配
|
Web App开发 移动开发 前端开发
HTML5 移动端页面适配 iOS 系统刘海屏
HTML5 移动端页面适配 iOS 系统刘海屏
1361 0
HTML5 移动端页面适配 iOS 系统刘海屏
iOS11 适配相关
刷新之后首页顶上去的问题怎么处理
51 0

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 7
    iOS各个证书生成细节
  • 8
    uniapp云打包ios应用证书的获取方法,生成指南
  • 9
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 10
    【iOS-cocos2d-X 游戏开发之十】自定义各类模版&触屏事件讲解!
  • 1
    uniapp云打包ios应用证书的获取方法,生成指南
    27
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
    117
  • 3
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    20
  • 4
    iOS各个证书生成细节
    35
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    157
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    55
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    73
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    54
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    65
  • 10
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    171