iOS 10
1. 访问权限崩溃问题
如果打开APP后点击有关权限访问后直接Crash了则需要在需要在info.plist文件中进行相关配置(蓝牙,日历,相机,相册,相机,联系人,健康等权限...)
权限配置步骤:
- 打开项目中的info.plist文件
- 在info.plist文件Add Row一行后选择相应的权限进行添加
- 先去相应的Key,Value 应该可以随便填写
如果一个个添加嫌麻烦可以全部添加到plist文件中
打开plist源文件后添加如
NSBluetoothPeripheralUsageDescription
App需要您的同意,才能访问蓝牙
NSCalendarsUsageDescription
App需要您的同意,才能访问日历
NSCameraUsageDescription
App需要您的同意,才能访问相机
NSHealthShareUsageDescription
App需要您的同意,才能访问健康分享
NSHealthUpdateUsageDescription
App需要您的同意,才能访问健康更新
NSHomeKitUsageDescription
App需要您的同意,才能访问家庭
NSContactsUsageDescription
App需要您的同意,才能访问通讯录
NSLocationAlwaysUsageDescription
App需要您的同意,才能始终访问位置
NSLocationUsageDescription
App需要您的同意,才能访问位置
NSLocationWhenInUseUsageDescription
App需要您的同意,才能在使用期间访问位置
NSAppleMusicUsageDescription
App需要您的同意,才能访问媒体资料库
NSMicrophoneUsageDescription
App需要您的同意,才能访问麦克风
NSMotionUsageDescription
App需要您的同意,才能访问运动与健身
NSPhotoLibraryUsageDescription
App需要您的同意,才能访问相册
NSRemindersUsageDescription
App需要您的同意,才能访问提醒事项
NSSiriUsageDescription
App需要您的同意,才能访问Siri
NSSpeechRecognitionUsageDescription
App需要您的同意,才能访问语音识别
NSVideoSubscriberAccountUsageDescription
App需要您的同意,才能访问视频用户账户 ```
#2. nullable报错问题
使用Xcode8之后,需要删除nullable否则报错
-(void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error```
3. ATS(App Transport Security) 网络适配问题
- iOS 9时,默认HTTS的网络是被禁止的, 但可以通过向info.plist文件中添加NSAppTransportSecurity,并将NSAllowsArbitraryLoads设置为YES来禁用ATS。但是,从2017年1月1日起,所有新提交的APP默认不允许配置NSAllowsArbitraryLoads来绕过ATS的限制,所以你的APP应尽早使用HTTPS进行内容访问,以避免APP被拒绝风险。
- 如果APP中如果集成了第三方的SDK,则可以通过NSAppTransportSecurity中NSExceptionDomains设置白名单的方式对特定的域名开放HTTP内容来通过审核。
NSExceptionDomains设置方法 - 在NSAppTransportSecurity 中新加入了NSAllowsArbitraryLoadsInWebContent键,允许任意web页面加载,同时苹果会用 ATS 来保护你的app。
4.新增UIViewPropertyAnimator类
类特点:
1.可中断性
2.可擦除
3.可反转性
4.丰富的动画时间控制功能
//初始化属性动画器
UIViewPropertyAnimator *viewPropertyAnimator = [[UIViewPropertyAnimator alloc] initWithDuration:5.f curve:UIViewAnimationCurveLinear animations:^{
[self.view setAlpha:0.3];
}];
[viewPropertyAnimator startAnimation];
5.Notification(通知)
- 所有相关通知被统一到了UserNotifications.framework框架中。
- 增加了撤销、更新、中途还可以修改通知的内容。
- 通知中可以加入视频、图片,自定义通知的展示等等。
- 相对之前的通知来说更加好用易于管理,并且进行了大规模优化。
- 对于权限问题进行了优化,申请权限就比较简单了(本地与远程通知集成在一个方法中)。
通知相关参考
6.UIStatusBar方法过期
过期方法:
// Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;```
新方法:
if UIKIT_DEFINE_AS_PROPERTIES
@property(nonatomic, readonly) UIStatusBarStyle preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarStyleDefault
@property(nonatomic, readonly) BOOL prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO
// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden.
@property(nonatomic, readonly) UIStatusBarAnimation preferredStatusBarUpdateAnimation NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarAnimationFade
else
- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarStyleDefault
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO
// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden. - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarAnimationFade
endif```
上面这个新方法在UIViewController.h文件中,只需要在viewController里调用即可。
- (BOOL)prefersStatusBarHidden{
return YES;
}
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}```
##7.插件取消
Xcode8取消了三方插件的功能,好多教程破解可以继续使用,但是可能app上线可能会被拒。
#Xcode 8
---
Xcode 8 可以创建iPhone,iPad,Apple Watch,Mac,Apple TV 等平台的应用程序。
![Xcode 8 首界面](http://upload-images.jianshu.io/upload_images/2529977-c4a3f37cef2c061e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##1. Swift 3
Swift 3对大量语法进行了优化及更新,会对Swift 3以前的版本会有影响,为解决此问题Xcode 8在编译设置中支持开发者选择Swift 2或Swift 2.3 进行编译。
如果一个目标(Target)需要支持Swift 2.3, 需要在目标(Target)的编译设置里把Use Legacy Swift Language Version 设置成Yes
![支持Swift语言以往版本](http://upload-images.jianshu.io/upload_images/2529977-6b613df856043023.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##2. 证书管理
Xcode 8添加了自动管理证书功能。
建议勾选这个选项Automatically manage signing
如未设置开发者账号,则需要在xcode->preferences->Accounts中添加
![自动管理证书](http://upload-images.jianshu.io/upload_images/2529977-81d200dcecac3fa6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#Xcode 8问题解决
---
##1. 代码注释快捷功能不能使用
解决方法
打开终端 - 输入命令运行:sudo /usr/libexec/xpccachectl
重启计算机
##2. 出现杂乱的Debug
会在Debug窗口出现如下信息
>2016-10-10 16:12:37.746003 HHRouterExample[9121:339626] subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
屏蔽方法
选择Product-> Scheme -> Edit Scheme -> Run -> Arguments 然后在Environment Variables里添加`OS_ACTIVITY_MODE = Disable`
![屏蔽方法](http://upload-images.jianshu.io/upload_images/2529977-df319775614e7154.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##官方链接地址
---
[UserNotifications](https://developer.apple.com/reference/usernotifications)