iOS 10
1. 访问权限崩溃问题
如果打开APP后点击有关权限访问后直接Crash了则需要在需要在info.plist文件中进行相关配置(蓝牙,日历,相机,相册,相机,联系人,健康等权限...)
权限配置步骤:
- 打开项目中的info.plist文件
- 在info.plist文件Add Row一行后选择相应的权限进行添加
- 先去相应的Key,Value 应该可以随便填写
如果一个个添加嫌麻烦可以全部添加到plist文件中
打开plist源文件后添加如
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能访问蓝牙</string>
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能访问日历</string>
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能访问相机</string>
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能访问健康分享</string>
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能访问健康更新 </string>
<key>NSHomeKitUsageDescription</key>
<string>App需要您的同意,才能访问家庭 </string>
<key>NSContactsUsageDescription</key>
<string>App需要您的同意,才能访问通讯录 </string>
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始终访问位置</string>
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期间访问位置</string>
<key>NSAppleMusicUsageDescription</key>
<string>App需要您的同意,才能访问媒体资料库</string>
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能访问麦克风</string>
<key>NSMotionUsageDescription</key>
<string>App需要您的同意,才能访问运动与健身</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能访问提醒事项</string>
<key>NSSiriUsageDescription</key>
<string>App需要您的同意,才能访问Siri</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>App需要您的同意,才能访问语音识别</string>
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>App需要您的同意,才能访问视频用户账户</string>```
#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 首界面](https://img.haomeiwen.com/i2529977/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语言以往版本](https://img.haomeiwen.com/i2529977/6b613df856043023.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##2. 证书管理
Xcode 8添加了自动管理证书功能。
建议勾选这个选项Automatically manage signing
如未设置开发者账号,则需要在xcode->preferences->Accounts中添加
![自动管理证书](https://img.haomeiwen.com/i2529977/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`
![屏蔽方法](https://img.haomeiwen.com/i2529977/df319775614e7154.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##官方链接地址
---
[UserNotifications](https://developer.apple.com/reference/usernotifications)
网友评论