从6月份开始iOS10就受到广大开发者的关注,作为一个新的iOS版本,对于开发的要求改动算
是近几年来很大的,近期很多公司都是在加班加点的适配iOS10,因为闪退、崩溃、功能不能
使用等莫名的bug一直出现,个人总结了以下问题,持续更新希望能帮到大家!
1.iOS10不能真机调试的解决方法
很多人从Xcode7升级到了Xcode8,发现一个棘手的问题,那就是真机不能进行调试。
我也遇到了,用DaisyDisk查目录的时候发现在Xcode文件夹下的的DeviceSupport里
面没有iOS10的SDK。
解决方案:用Find 或是 daisydisk打开Xcode的路径。路径如下
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
如果在该文件夹下有iOS10SDK那就直接放到对应文件夹下面
如果没有,就去下载iOS10SDK点击下载
2.OpenUrl使用方法被废弃
在iOS10版本之前,直接使用[[UIApplication sharedApplication] openURL方法就跳转指定网页和链接
目前已经在iOS10已经被废弃
3.Xcode8上传项目注意事项
在Xcode8里面上传项目的话,需要注意 xcode keychain sharing的设置
上传项目失败是因为之前版本都是默认开启,在Xcode8里面默认关闭。
4.编译器Xcode8新建项目的工程配置
注意:在Xcode8工程配置的general选项卡中,使用更详细signing选项替换了原有的team选项。
使用Xcode8打开工程后,项目的provisonfile配置出了问题
进入工程之后选中你的项目文件依次点击:
project
target
general
查看并进行手动配置。
5.App权限的适配问题
在iOS10,很多App在调用语音、相机、相册、定位等系统权限的时候会闪退崩溃
这是因为iOS对于隐私权限的配置更为严格。
解决方案:打开项目进入plist文件,或是选中项目文件进入 info修改。
列举一下:
上传会遇到这个情况
// 相机 NSCameraUsageDescription | // 相册 NSPhotoLibraryUsageDescription | // 麦克风: NSMicrophoneUsageDescription | // 通信录 NSContactsUsageDescription |
// 位置 NSLocationUsageDescription | // 日历 NSCalendarsUsageDescription | // 蓝牙 NSBluetoothPeripheralUsageDescription | // 媒体资料库 NSAppleMusicUsageDescription |
// 提醒事项 NSRemindersUsageDescription | // 在使用期间访问位置 NSLocationWhenInUseUsageDescription | // 始终访问位置 NSLocationAlwaysUsageDescription | // 运动与健身 NSMotionUsageDescription |
6.判断系统版本
在iOS10中读取不到iOS10的系统版本
简单的操作就能判断是否是iOS10:
if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){.majorVersion = 9, .minorVersion = 1, .patchVersion = 0}]) { NSLog(@"Hello from > iOS 9.1");} if ([NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){9,3,0}]) { NSLog(@"Hello from > iOS 9.3");} |
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_9_0) { // do stuff for iOS 9 and newer} else { // do stuff for older versions than iOS 9} |
7.UILable的文字显示问题
在iOS10中字体发生了变化,这导致一些文字在原有的宽高约束下可能会出现显示不完整或者留白的情况
需要在工程中测试并逐一排查,比较费时,但是只能这么做。
8.安全传输协议
在iOS 10 中info.plist文件新加入了NSAllowsArbitraryLoadsInWebContent键,允许任意web页面加载,苹果
会用 ATS 来保护你的app,安全传输不支持SSLv3。