现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本,童鞋们有木有下载过来试试呢?就我的使用来说,总体觉得苹果还是坑不断,但是也在一直进步的啦。下面我就来说说,iOS10的适配以及Xcode8使用上的一些注意点。
一、证书管理
用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)
QQ20160914-3.png快捷键的设置在这里
QQ20160914-2.png
貌似Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor
五、权限以及相关设置
注意,添加的时候,末尾不要有空格
我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。
具体如下图:
麦克风权限: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 我们需要通过您的地理位置信息获取您周边的相关数据
定位的需要这么写,防止上架被拒。
六、字体变大,原有frame需要适配
经有的朋友提醒,发现程序内原来2个字的宽度是24,现在2个字需要27的宽度来显示了。。
希望有解决办法的朋友,评论告我一下耶,谢谢啦
七、推送
如下图的部分,不要忘记打开。所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟✌️
QQ20160914-4.png之后就应该可以收到推送了。另外,极光推送也推出新版本了,大家也可以更新下。
PS.苹果这次对推送做了很大的变化,希望大家多查阅查阅,处理推送的代理方法也变化了。
// 推送的代理
[<UNUserNotificationCenterDelegate>]
iOS10收到通知不再是在
[application: didReceiveRemoteNotification:]
方法去处理, iOS10推出新的代理方法,接收和处理各类通知(本地或者远程)
- (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.
如这些
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
如果写了之后还是打印log,请重新勾选对勾,就可以解决了
Ps.考虑到添加上述内容在Xcode8后,真机调试可能出现异常,大家可以自定义一个宏定义,来做日志输出。
#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
大家有任何问题,可以评论给我~
如果写的不错,希望大家可以关注我。感谢。
网友评论
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data.
跪求指教啊,不胜感激
"_OBJC_CLASS_$_UNPushNotificationTrigger", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
升级xcode8后就报这个错误,按网上说的也不好使呀!
打开终端,命令运行: sudo /usr/libexec/xpccachectl
然后必须重启电脑后生效
还有就是,以前在xcode7.3上免证书真机调式,现在升级了就不行了是怎么回事?
The design canvas shows your interfaces as they will appear on devices. Select a device to view your interface by — this setting will be used for the initial view of your interfaces, and can be changed to another device at any time.
选择7还是6s.这里有什么区别.就是那个choose device
Command /usr/bin/codesign failed with exit code 1
两天了,还没解决,帮忙一下了
创建一个`Label`然后让它自适应大小,字体大小都是`17`最后输出的宽度是不一样的,我们再看一下,下面的数据就知道为什么升级iOS 10 之后`App`中有的文字显示不全了:
Xcode 8 打印 | Xcode 7 打印 |
------------ | ------------- |
1个文字宽度:17.5 | 1个文字宽度:17 |
2个文字宽度:35| 2个文字宽度:34|
3个文字宽度:52 | 3个文字宽度:51 |
4个文字宽度:69.5| 4个文字宽度:68|
5个文字宽度:87 | 5个文字宽度:85 |
6个文字宽度:104| 6个文字宽度:102|
7个文字宽度:121.5 | 7个文字宽度:119 |
8个文字宽度:139| 8个文字宽度:136|
9个文字宽度:156 | 9个文字宽度:153 |
10个文字宽度:173.5| 10个文字宽度:170|
暂时发现只有汉子会出现这种宽度改变的情况。
OS_ACTIVITY_MODE = Disable 添加了这个 也重新勾选 还是会有一堆log怎么办
xib修改字体,尺寸判断更改为判断系统版本
http://www.jianshu.com/p/5815e81abb52
重写UIFont的systemFontOfSize方法
http://www.jianshu.com/p/1e5db7d2ae6b
When I build my app with Xcode 8 GM Seed and run it on an iOS 9.2 below device OR simulator, I get strange EXC_BAD_ACCESS crashes during app startup or a few seconds after the app launched. The crash always happens in a different spot (adding a subview, [UIImage imageNamed:], app delegate's main method etc). I don't get those crashes when I run it on iOS 9.3+ or 10 and I don't get them when I build with Xcode 7 and run on iOS 9.2 and below. Has anyone else experiences something similar? Is this a known issue with Xcode 8?
答案在链接中http://stackoverflow.com/questions/39404285/xcode-8-build-crash-on-ios-9-2-and-below
nothing found to document at the current location
楼主,能说说这个是怎么回事嘛?
这个怎么回事?
//AppName.entitlements
<key>aps-environment</key>
<string>development</string>
默认是 development 环境,我改成 production 后push notification 那边就会报错,点击修复之后value 又变成 development 了,这个问题怎么解决?
我看到其中“权限”那一项,有这么一句【定位的需要这么写,防止上架被拒。】 没太看明白,是指定位权限要加这2条 :Privacy - Location When In Use Usage Description 和 Privacy - Location Always Usage Description 才能防止上架被拒呢?还是说写多了会上架被拒?
NSRange range = [language rangeOfString:@"-" options:NSBackwardsSearch];
language = [language substringToIndex:range.location];
}
有遇到这里奔溃的问题吗?在线等