程序员人生 网站导航

Xcode8 及 iOS 10 的适配

栏目:综合技术时间:2016-10-11 09:01:17

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

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

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

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


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

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


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

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

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>
如果没有用,需配置1下



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

5.Nib问题:正告

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

6.UIApplication对象中openUrl被废弃

在iOS 10之前,我们要想使用利用程序去打开1个网页或进行跳转,直接使用[[UIApplication sharedApplication] openURL 方法就能够了,但是在iOS 10 已被废弃了,由于使用这类方式,处理的结果我们不能拦截到也不能获得到,对开发是非常不利的,在iOS 10全新的退出了 [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil];有1个成功的回调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时遇到的蛋疼的1个问题)
由于上述第2点,我勾选了Automatically manage signing,所以在提交时就不用配置证书了,但会提示在你配置Apple ID 

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

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

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样的,苹果还是会谢绝。

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




------分隔线----------------------------
------分隔线----------------------------

最新技术推荐