Xcode8 及 iOS 10 的适配

来源:互联网 发布:淘宝网购物女裤 编辑:程序博客网 时间:2024/06/06 19:27

最近下载Xcode8 ,把项目适配了一下iOS10 ,把遇到的一些问题记录下来:

1.Xcode8运行项目之后,控制台打印了一堆东西;

去除方法:选择Xcode ->Product ->Scheme -> Edit Scheme 或者按command + shift + < 快捷键,

在弹出的窗口中Environment Variables 下添加 0S_ACTIVITY_MODE=disable


注:真机调试不输出NSlog了,所以我真机调试的时候,把此处对号去除,就好了

2.Xcode8 打开工程后,出现下图,苹果新特性


我勾选了Automatically manage signing,并且选择配置了Team,就好了。

注:或者另外一种方式  点击打开链接

3.用Xcode8 运行项目在真机上,打开相机相册功能,程序崩溃;

解决办法:项目中访问了隐私数据,需要在info.plist中添加这些权限:

相机权限

<key>NSCameraUsageDescription</key>

<string>cameraDesciption</string>

相册权限

<key>NSPhotoLibraryUsageDescription</key>

<string>photoLibraryDesciption</string>


注:
<!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> <!-- 相机 --> <key>NSCameraUsageDescription</key> <string>App需要您的同意,才能访问相机</string> <!-- 麦克风 --> <key>NSMicrophoneUsageDescription</key> <string>App需要您的同意,才能访问麦克风</string> <!-- 位置 --> <key>NSLocationUsageDescription</key> <string>App需要您的同意,才能访问位置</string> <!-- 在使用期间访问位置 --> <key>NSLocationWhenInUseUsageDescription</key> <string>App需要您的同意,才能在使用期间访问位置</string> <!-- 始终访问位置 --> <key>NSLocationAlwaysUsageDescription</key> <string>App需要您的同意,才能始终访问位置</string> <!-- 日历 --> <key>NSCalendarsUsageDescription</key> <string>App需要您的同意,才能访问日历</string> <!-- 提醒事项 --> <key>NSRemindersUsageDescription</key> <string>App需要您的同意,才能访问提醒事项</string> <!-- 运动与健身 --> <key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string> <!-- 健康更新 --> <key>NSHealthUpdateUsageDescription</key> <string>App需要您的同意,才能访问健康更新 </string> <!-- 健康分享 --> <key>NSHealthShareUsageDescription</key> <string>App需要您的同意,才能访问健康分享</string> <!-- 蓝牙 --> <key>NSBluetoothPeripheralUsageDescription</key> <string>App需要您的同意,才能访问蓝牙</string> <!-- 媒体资料库 --> <key>NSAppleMusicUsageDescription</key> <string>App需要您的同意,才能访问媒体资料库</string>
如果没有用,需配置一下



4.字体变大,原有的fream需要适配,智能逐一排查啦

5.Nib问题:警告

- (void)awakeFromNib {    // Initialization code}
需要添加:
  [super awakeFromNib];

6.UIApplication对象中openUrl被废弃

在iOS 10以前,我们要想使用应用程序去打开一个网页或者进行跳转,直接使用[[UIApplication sharedApplication] openURL 方法就可以了,但是在iOS 10 已经被废弃了,因为使用这种方式,处理的结果我们不能拦截到也不能获取到,对于开发是非常不利的,在iOS 10全新的退出了 [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil];有一个成功的回调block 可以进行监视。
注:仍然可以用,只不过会出现警告
7.系统判断失效 
现在改用:
#define LIOS10_OR_LATER  ([[[UIDevice currentDevice]systemVersion]compare:@"10.0" options:NSNumericSearch] !=NSOrderedAscending)
8.代码注释不能用
解决方法:
打开终端,命令运行: sudo /usr/libexec/xpccachectl
然后必须重启电脑后生效


嘿嘿,其他的等用到,在更新吧

更新:9.20 晚10:10(同事还在加班,我刚发布完,这会儿没事,记录Xcode8发布App Store时遇到的蛋疼的一个问题)
由于上述第二点,我勾选了Automatically manage signing,所以在提交时就不用配置证书了,但会提示在你配置Apple ID 

本来按照以前的方式上传应该没啥问题的,但是到商店里却找不到构建版本,(日了鬼了)。有时候连“+”都没,有的会显示此版本无效。三四次都这样——————————————

查下资料后,说是苹果会有反馈邮件,于是登入了公司的企业邮箱看下,果然有::::

Dear developer,We have discovered one or more issues with your recent delivery for "APPName". To process your delivery, the following issues must be corrected:This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.Once these issues have been corrected, you can then redeliver the corrected binary.Regards,The App Store team

原来是在plist文件的隐私描述写少了,赶紧添加上,这个要根据自己APP的情况来添加,描述必须要加上,如果不添加描述,跟没加是一样的,苹果还是会拒绝。

加完以后,再次上传就成功了。。。(好了,下班了)




1 0
原创粉丝点击