Xcode8.0与iOS10:
界面的更新,开头先庆幸一点,我们的项目基本上没有用到xib,不然也就只能呵呵了,当点击xib的时候会让你选择设备类型
这方面听说当设置以后回到Xcode7.0以下会报错
接下来探讨整体:
1.证书的自动配置,这个确实不错,会自动生成配置文件或者签名文件
1>打包的时候要将自动生成的证书的"钩"去掉,手动添加证书
2.解决更新到Xcode8.0以后的问题
1>log,不知道在控制器打印了一堆什么东东,反正乱七八糟不想看,听说是关于内存方面的打印日志,反正我就是想给他关掉,所以设置如下图
OS_ACTIVITY_MODE = Disable
2.注释插件不能使用的情况解决的办法:
打开终端命令运行: sudo /usr/libexec/xpccachectl
重启电脑就可以使用了
3.权限的限制,在之前只有访问定位的时候会这只权限,现在不一样了,如果要访问相机,麦克风,通讯录等也要设置权限,如下
麦克风权限:Privacy - Microphone Usage Description是否允许此App使用你的麦克风?
相机权限: Privacy - Camera Usage Description是否允许此App使用你的相机?
相册权限: Privacy - Photo Library Usage Description是否允许此App访问你的媒体资料库?
通讯录权限: Privacy - Contacts Usage Description是否允许此App访问你的通讯录?
蓝牙权限:Privacy - Bluetooth Peripheral Usage Description是否许允此App使用蓝牙?
语音转文字权限:Privacy - Speech Recognition Usage Description是否允许此App使用语音识别?
日历权限:Privacy - Calendars Usage Description是否允许此App使用日历?
定位权限:Privacy - Location When In Use Usage Description我们需要通过您的地理位置信息获取您周边的相关数据
定位权限: Privacy - Location Always Usage Description我们需要通过您的地理位置信息获取您周边的相关数据
定位的需要这么写,防止上架被拒。
5.推送
推送之前的注册和监听都是有application来负责.iOS10进行了重构,现在完全交给了单独的类去管理,在适配iOS10+的时候首先要导入
#import <UserNotifications/UserNotifications.h>
设置代理:UNUserNotificationCenterDelegate
iOS10收到通知不再是在
[application: didReceiveRemoteNotification:]方法去处理, iOS10推出新的代理方法,接收和处理各类通知(本地或者远程)
首先是申请权限,然后注册通知和代理
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { //应用在前台收到通知 NSLog(@"========%@", notification);}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //点击通知进入应用 NSLog(@"response:%@", response);}
6.ios10ats配置的文档说明请参照下面的文档:
https://onevcat.com/2016/06/ios-10-ats/
7.UIRefreshControl之前是UITableViewController的属性,现在是UIScrollView的一个属性,也就是说只要集成UIScrollView的子类都可以实现刷新功能
8.UICollectionViewCell的优化,多了一个预加载的代理,cell的生命周期方法加载时机的变化,cell是一个一个加载的,不同于iOS10之前是一行一行加载,在iOS10之前要想复用cell只能从缓存队列中取,然后再走一遍cell的生命周期的方法,iOS10以后cell当滑出界面以后会保存一段时间,然后调用WillDisplayCell方法就可以重新出现在屏幕上了
9.UITextField新增了textContentType的字段
10.UIStatusBar设置状态栏的方法的废弃 setStatusBarStyle: animated(是由application设置的),现在status的hidden和preferStyle只能由viewController进行设置,而且是该属性是只读的,只能通过调用方法设置
11.UIColor新增的两个api, sRGB
12.隐私数据访问的问题,如果不行就请求后台的权限
13.iOS10不能跳转到系统设置相关的界面,具体的解决办法后续补上
14.真色彩的显示: 根据光感应器来自动调节达到特定环境下显示与性能的平衡效果,在info中设置添加key"UIWhitePointApaptivityStytle"
15.系统版本判断的宏:
//判断版本号
#define IOS10_OR_LATER [[UIDevice currentDevice].systemVersion floatValue] >= 10.0
#define IOS9_OR_LATER [[UIDevice currentDevice].systemVersion floatValue] >= 9.0
#define IOS8_OR_LATER [[UIDevice currentDevice].systemVersion floatValue] >= 8.0
#define IOS7_OR_LATER [[UIDevice currentDevice].systemVersion floatValue] >= 7.0
#define IOS6_OR_LATER [[UIDevice currentDevice].systemVersion floatValue] >= 6.0
跳转到设置界面:
#define SettingURL [NSURL URLWithString:UIApplicationOpenSettingsURLString]
//调到设置界面
#define GoToSetting if([[UIApplication sharedApplication] canOpenURL:SettingURL]) {\
[[UIApplication sharedApplication] openURL:SettingURL];\
}
UNUserNotificationCenterDelegate提供了两个方法,分别对应如何在应用内展示通知,和收到通知响应时要如何处理的工作。我们可以实现这个接口中的对应方法来在应用内展示通知
通知相关操作遵循的流程:
申请和注册----->创建和发起----->展示和处理