iOS个人修养IOSiOS开发工具

让你的项目适配iOS 10

2016-09-05  本文已影响4563人  CGPointZero

准备工作

更新Xcode 8beta

在Mac上下载最新的Xcode 8 beta版

安装iOS 10 beta描述文件

在你要升级的iOS 10的设备上,打开Safari,打开网址https://beta.apple.com/profile下载iOS 10的描述文件。
安装完描述文件之后,进入“设置”>“通用”>“软件更新”来安装iOS beta版。

iOS 10适配

项目转化

上面的准备工作做好了,接下来开始做iOS 10的适配工作。
用Xcode8 beta打开我们的项目,会提示转化,选择Convert



如果你的项目里有swift,会弹出swift 3版本的转化,点next


选择我们的target继续点next


点save保存更改。

清理缓存

关闭并退出Xcode,清理Xcode的缓存,这些缓存若不清理,会有很多报错.
打终端,输入指令:open ~/./Library/Developer/Xcode/DerivedData,删除DerivedData下的所有文件。

iOS 10权限适配

清理完缓存后,重新用Xcode 8 beta打开项目,首先做权限适配
iOS 10调用相机,访问通讯录,访问相册等都要在plist中加入权限访问描述,不然iOS 9上来的项目涉及到这些权限的地方就会直接crash掉,报错信息如下:

This app has crashed because it attempted to access privacy-sensitive data without a usage description.

打开info.plist添加权限许可描述键值对:



常见的权限许可设置如下:

相机权限: Privacy - Camera Usage Description  是否允许此App使用你的相机?
相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
通讯录权限: Privacy - Contacts Usage Description  是否允许此App访问你的通讯录?
蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
定位权限:Privacy - Location When In Use Usage Description 是否允许此App使用定位服务?
语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
其它iOS 10适配相关的问题

1.<b>objc_retainedObject()要替换成(__bridge NSData *)()</b>

2.如果你的项目使用了Masonry,那么很多缺斤少两的约束在iOS 9上还可以正常显示,但iOS 10是绝对不行的,不是crash掉就是显示不正确。应该全面检查项目的各个界面的约束是否存在问题,并一一修复。

3.如果你的项目使用了YYText,在iOS 10上存在很多显示问题,请更新到最新版。
如果你之前使用了nonHighlightTapAction或nonHighlightLongPressAction,请更换成textTapAction及textLongPressAction.

4.之前使用了YYText,在Label的算高上,iOS 10需要增大额外的高度,才能达到iOS 9的显示全。

5.iOS 10提供新的Speech.framework,Speech Recognition语音转文字

SFSpeechRecognizer *recognizer=[[SFSpeechRecognizer alloc] initWithLocale:[NSLocale currentLocale]];
    NSURL *audioSourceURL;//音频文件的url,如AudioRecord
    SFSpeechURLRecognitionRequest *requset=[[SFSpeechURLRecognitionRequest alloc] initWithURL:audioSourceURL];
    [recognizer recognitionTaskWithRequest:requset resultHandler:^(SFSpeechRecognitionResult *result, NSError *error) {
        
        //语音转文字的结果
        NSString *resultString=result.bestTranscription.formattedString;
    }];

使用语音识别,也需要加上权限许可描述,上面有提到过。
6.Xcode 8会打印一堆乱七八糟的log,解决办法是,去edit scheme里,设置OS_ACTIVITY_MODE : disable


持续更新中...请关注!
上一篇下一篇

猜你喜欢

热点阅读