1、自动管理证书

首先要说的就是Xcode8。打开Xcode8最明显的就是Targets-->General下的自动管理证书模块。以前对于新手来说无论是开发还是打包都必须要被苹果的开发签名系统虐上几遍才能真正明白它的原理和规程。现在貌似直接勾上“Automatically manage signing”,Xcode8一切都帮我们做好了。不得不说确实很方便!

不过认真想想,这个“Automatically manage signing”按钮无非就是自动帮我们在开发者中心创建appid、cetificaiton、profire provision等等证书文件并且自动关联上。但是如果我们证书管理不规范,很有可能出现revoke证书的情况。这是一直以来很头疼的事情。所以我还是推崇开发者自己手动创建和管理证书。呵呵,这个自动管理证书的按钮我们选择不勾上。

2、杂乱无章的日志输出

Xcode8启动后一连串杂乱无章的日志输出,第一反应就是这是什么鬼!

在网上查了一下,原来这个日志的输出是可以关闭的。关闭路径:Edit Scheme-->Run-->Arguments-->Enviroment Variables ,添加一个配置选项就好了 “OS_ACTIVITY_MODE = Disable”。

3、推送增加 entitlements 文件签名

Xcode8增加了一项很重要的功能:为推送增加了entitlements 文件签名。所以,如果你的应用是支持推送的,那一定要记得打开这个entitlements

文件签名的开关!否则APP在启动注册推送服务的时候就报签名错误了,Push消息也就不可能接收的到。

下图的开关记得打开!

另外,苹果对推送的框架和API也做了重大的调整,需要开发者对IOS10+做相应的适配,后面会详细介绍。

4、系统权限设置

IOS10对系统权限的使用做了更加严格的控制。

APP想要使用系统的某个权限,必须要在项目设置info.plist文件中设置相应的权限说明,否则在IOS10上会出现崩溃。

事实上,如果你的应用使用了系统某个权限,但是没有设置相应的权限说明,那么你的应用在上传到itunes connect后会马上被changed to invalid

binary。

因为这个坑我们第一天就踩了:用Xcode 8打包上传App,本地验证和ipa上传都正常,但是上传成功后,包马上被changed

to invalid binary,itunes connect后台的构建版本也一直出不来。一看反馈邮件,原因就是使用了某个系统权限但是没有添加相应权限的说明!

相应的系统权限说明如下:

麦克风权限---> 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、字体变大,原来的一些控件出现字体显示不全

IOS10下的字体比原来的字体更大。

以前刚刚好显示的下的文字在IOS10上竟然显示不全了,因为IOS10的中文字体比原先的字体要大,目前的解决方法就是把原来定宽且刚好显示完全的控件重新调整一遍:要么把宽度加宽要么内容自适应大小。

6、IOS10跳转到系统设置的相应方法已经禁止

在iOS10以前,我们可以通过以下方法跳转到设置相应的页面去:

//跳转到设置的 WIFI 页面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];

另外:

IOS6和IOS7需要设置URL Schemes:在URL Types中添加一个新项(prefs)。

IOS8和IOS9则不需要设置这个。

IOS10已经禁止,所以IOS10的系统可以去除这部分业务逻辑了。

关于APP跳转到系统Setting,可以参考本人的这篇文章。App如何跳转到系统Settings

7、Xcode代码注释不能用

这个是因为苹果解决xcode ghost,把插件屏蔽了。

解决方法

打开终端,命令运行: sudo /usr/libexec/xpccachectl

然后必须重启电脑后生效

iOS - 总结适配IOS10需要注意的问题的更多相关文章

  1. iOS开发 适配iOS10

    2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从Notificat ...

  2. iOS 如何适配iOS10

    转自: http://www.cnblogs.com/jukaiit/p/5881062.html 2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线 ...

  3. iOS - 如何适配iOS10(插曲)

    升级了系统10.12beta xcode8  出现一大推问题 ,连上架APP都成了问题.只能先解决这些问题,再研究3D引擎了. 2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操 ...

  4. iOS开发 适配iOS10以及Xcode8[转]

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...

  5. iOS开发 适配iOS10以及Xcode8

    iOS10的适配以及Xcode8使用上的一些注意点 一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automaticall ...

  6. iOS开发 适配iOS10以及Xcode8-b

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...

  7. 【转】iOS学习之适配iOS10

    适配iOS10 2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从N ...

  8. 适配iOS10的哪些事 ---- 学习笔记八

    一. 上传了一个版本,为什么没有构建版本? 解:info.plist中的Bundle version 与上一个版本一致或少于上一个版本,上线新版本时,Bundle version和Bundle ... ...

  9. 【腾讯Bugly干货分享】QQ电话适配iOS10 Callkit框架

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/58009392302e4725036142fc Dev Club 是一个交流移动 ...

随机推荐

  1. Kotlin集合——Map集合

    Kotlin集合——Map集合 转 https://www.jianshu.com/p/da5cc9072f1e Kotlin的Map集合用于保存key-value对,其也被分为可变的和不可变的. 一 ...

  2. 编写第一个dart程序hello dart

    /* 入口方法的两种定义方式 main(){ print('hello dart'); } */ ///这也是一个注释 //表示main方法没有返回值 void main(){ print('hell ...

  3. 003-结构型-05-桥接模式(Bridge)

    一.概述 将抽象部分与它的具体实现部分分离.使它们都可以独立地变化.通过组合的方式建立两个类之间联系,而不是继承. Bridge 模式又叫做桥接模式,是构造型的设计模式之一.Bridge模式基于类的最 ...

  4. QTableView加载数据

    void VCAdmin::searchAllUser() { strID_Index = ""; if (NULL == vcManageDatabaseObj) { vc_ad ...

  5. 【444】Data Analysis (shp, arcpy)

      ABS suburbs data of AUS 1. Dissolve Merge polygons with the same attribute of "SA2_NAME16&quo ...

  6. Python json序列化时default/object_hook指定函数处理

    在Python中,json.dumps函数接受参数default用于指定一个函数,该函数能够把自定义类型的对象转换成可序列化的基本类型.json.loads函数接受参数objec_thook用于指定函 ...

  7. Python中利用原始套接字进行网络编程的示例

    Python中利用原始套接字进行网络编程的示例 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构 ...

  8. jquery创建一个新的节点对象(自定义结构/内容)的好方法

    jq创建一个新的节点对象,这对一些自定义功能很有帮助,而且可以随意控制对象的结构与内容,何乐而不为呢,看到这里,相信有些朋友已经按耐不住了,好记下来为大家介绍实现方法,感兴趣的朋友可以了解下哦 < ...

  9. CTF 资源

    1.<CTF 工具集>包括web工具.渗透环境.隐形工具.逆向工具.漏洞扫描工具.sql注入工具.暴力破解工具.加解密工具等等. 参考地址:https://www.ctftools.com ...

  10. left join 和inner join关联查询区别

    inner join 必须两边对应才能查处结果 left join 用主表关联副表,关联不出来依然显示结果