兼容iOS 10:适配iOS10以及Xcode8

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看341 回复回复1 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 341|回复: 1
收起左侧

兼容iOS 10:适配iOS10以及Xcode8

[复制链接]
jswift 发表于 2016-9-26 02:49:03 | 显示全部楼层 |阅读模式
快来登录
获取最新的苹果动态资讯
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
本帖最后由 jswift 于 2016-9-26 03:16 编辑

现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本和正式版本了,加上9.14日凌晨苹果已经正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 版本,童鞋们有木有下载过来试试呢?就我的使用来说,总体觉得苹果还是坑不断,但是也在一直进步的啦。下面我就来说说,iOS10的适配以及Xcode8使用上的一些注意点。




1、证书管理

用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beta2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)

兼容iOS 10:适配iOS10以及Xcode8 1

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 1


下面我来说说可能会出现的问题:

1.Xcode未设置开发者账号情况下的截图

兼容iOS 10:适配iOS10以及Xcode8 2

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 2


解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可。

2.设备机器未添加进开发者的Device情况下的截图

兼容iOS 10:适配iOS10以及Xcode8 3

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 3


解决办法是:大家在官网将设备添加进开发机后,陪下描述文件重新下个描述文件即可。

3.正常情况:Xcode配置登录开发者账号后的图片,耐心等待即可。

兼容iOS 10:适配iOS10以及Xcode8 4

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 4


等待完成之后的图

兼容iOS 10:适配iOS10以及Xcode8 5

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 5





2、Xib文件的注意事项

使用Xcode8打开xib文件后,会出现下图的提示。

兼容iOS 10:适配iOS10以及Xcode8 6

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 6


大家选择Choose Device即可。

之后大家会发现布局啊,frame乱了,只需要更新一下frame即可。如下图

兼容iOS 10:适配iOS10以及Xcode8 7

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 7


注意:如果按上面的步骤操作后,在用Xcode7打开Xib会报一下错误,

兼容iOS 10:适配iOS10以及Xcode8 8

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 8


解决办法:需要删除Xib里面

[XML] 纯文本查看 复制代码
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>


这句话,以及把< document >中的toolsVersion和< plugIn >中的version改成你正常的xib文件中的值,不过不建议这么做,在Xcode8出来后,希望大家都快速上手,全员更新。这就跟Xcode5到Xcode6一样,有变动,但是还是要尽早学习,尽快适应哟!




3、代码及API注意

使用Xcode8之后,有些代码可能就编译不过去了,具体我就说说我碰到的问题。

1.UIWebView的代理方法:

**注意要删除NSError前面的 nullable,否则报错。

[Objective-C] 纯文本查看 复制代码
- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error
{
    [self hideHud];
}





4、代码注释不能用的解决办法

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

解决方法:

打开终端,命令运行:

[Bash shell] 纯文本查看 复制代码
sudo /usr/libexec/xpccachectl


然后必须重启电脑后生效

注意:Xcode8内置了开启注释的功能,位置在这里:

兼容iOS 10:适配iOS10以及Xcode8 9

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 9


快捷键的设置在这里:

兼容iOS 10:适配iOS10以及Xcode8 10

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 10


貌似Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor。




5、权限以及相关设置

注意,添加的时候,末尾不要有空格。

我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。

具体如下图:

兼容iOS 10:适配iOS10以及Xcode8 11

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 11


麦克风权限: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 我们需要通过您的地理位置信息获取您周边的相关数据
定位的需要这么写,防止上架被拒。




6、字体变大,原有frame需要适配

经有的朋友提醒,发现程序内原来2个字的宽度是24,现在2个字需要27的宽度来显示了。。

希望有解决办法的朋友,评论告我一下耶,谢谢啦




7、推送

如下图的部分,不要忘记打开。所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟

兼容iOS 10:适配iOS10以及Xcode8 12

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 12


之后就应该可以收到推送了。另外,极光推送也推出新版本了,大家也可以更新下。

PS.苹果这次对推送做了很大的变化,希望大家多查阅查阅,处理推送的代理方法也变化了。

[Objective-C] 纯文本查看 复制代码
// 推送的代理
[<UNUserNotificationCenterDelegate>]


iOS10收到通知不再是在
[application: didReceiveRemoteNotification:]方法去处理, iOS10推出新的代理方法,接收和处理各类通知(本地或者远程)

[Objective-C] 纯文本查看 复制代码
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { //应用在前台收到通知 NSLog(@"========%@", notification);}- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //点击通知进入应用 NSLog(@"response:%@", response);}


稍后我会更新文章,对推送做一个详细的讲解。




8、屏蔽杂乱无章的bug

更新Xcode8之后,新建立工程,都会打印一堆莫名其妙看不懂的Log。

如这些:

[Objective-C] 纯文本查看 复制代码
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,


屏蔽的方法如下:

Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加

OS_ACTIVITY_MODE = Disable

兼容iOS 10:适配iOS10以及Xcode8 13

兼容iOS 10:适配iOS10以及Xcode8 - 敏捷大拇指 - 兼容iOS 10:适配iOS10以及Xcode8 13


如果写了之后还是打印log,请重新勾选对勾,就可以解决了。

Ps.考虑到添加上述内容在Xcode8后,真机调试可能出现异常,大家可以自定义一个宏定义,来做日志输出。

[Objective-C] 纯文本查看 复制代码
#ifdef DEBUG

#define DDLOG(...) printf(" %s\n",[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
#define DDLOG_CURRENT_METHOD NSLog(@"%@-%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))

#else

#define DDLOG(...) ;
#define DDLOG_CURRENT_METHOD ;

#endif


大家有任何问题,可以回帖给我~

如果写的不错,希望大家可以关注我。感谢。




相关内容:

兼容iOS 10:配置获取隐私数据权限声明 Privacy Settings in iOS 10

兼容iOS 10:资料整理笔记

兼容iOS 10:适配iOS10以及Xcode8

兼容iOS 10:iOS 10 的适配问题

我会在敏捷大拇指 Swifthumb.com 上陆续发布iOS10兼容适配方面的帖子,敬请期待。

欢迎大家订阅我的淘帖《兼容iOS 10 适配 自适应




作者:徐不同

都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 贡献 +10 专家分 +10 收起 理由
Anewczs + 10 + 10 + 10 32个赞!专家给力!

查看全部评分

本帖被以下淘专辑推荐:

swifter 发表于 2016-9-28 16:35:47 | 显示全部楼层
你这几篇兼容iOS 10的都不错呢~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表