你有没有遇到过自己的APP在iOS 8系列系统中崩溃?

 

问题描述:开发的一款app在所有的8系列的系统上都跑不起来,当看到苹果开发者中心的崩溃比例,我惊呆了,公司项...



问题描述:开发的一款app在所有的8系列的系统上都跑不起来,当看到苹果开发者中心的崩溃比例,我惊呆了,公司项目总监也给我反馈了好几次,对于一个刚出世的独立开发小白来说真的感觉有点恐慌。然而,最苦逼多事发生了,看不到崩溃日志,崩溃的用户手机里面没有开启上传崩溃日志功能,公司的测试手机以及自己的手机都是9之后的系统,所有运行都是正常的,根本不能调试,没有8系列系统的手机,我的第一想法是加入一个第三方的崩溃日志管理工具来看看崩溃信息,然后发布到内测平台让朋友8系统的手机跑一下看看崩溃日志(这时候才真的发现崩溃日志管理是有多么的重要,至少不用现在这么苦逼的找原因),好吧,开干。于是疯狂的找关于怎么使用第三方崩溃日志管理工具,独立开发小白真的有很多不知道的好用的工具,问了下安卓大哥用的腾讯的Bugly,我却为了装逼选择了存英文的Crashlytics,国外的,真的好好用,这里有个别人的效果图(不想截图)http://www.mamicode.com/info-detail-470447.html 跟着Crashlytics的提示一步步往下走就能成功的配置好 。

有了查看崩溃日志的工具,那么需要8的系统跑app,这时候没有相应的手机,只有通过内测平台了,现在用过的内测平台有:蒲公英内测平台、fir.im、苹果的TestFlight ,除了TestFlight之外,其他两个都需要创建单独的企业发布证书,还要配置xcode ,测试的手机UUID必须添加进证书里面才能安装,步骤很繁琐,具体的配置方式http://bughd.com/doc/ios 跟着操作就可以了,所有我现在都会选择苹果的TestFlight,这个是基于苹果id的下载安装,用自己的苹果id下载TestFlight别人也放心,另外两个要上传设备的UUID,这样别人也不放心,另外一个id在所有的设备上可以登录下载TestFlight,而多个设备测试UUID的添加也麻烦,推荐使用TestFlight。

根据Crashlytics 的崩溃信息(邮件提示):



Crashlytics后台提示:



定位到代码中:



这个是3D Touch的快速启动项标志,shortItem里面包含了快速启动项标志type。

3D Touch是在9.0之后的版本才有的,所有版本低于9的系统运行到这里会崩溃,崩溃信息是UIApplicationLaunchOptionsShortcutItemKey键值找不到。

问题找到,加了个判断:

if ([[UIDevicecurrentDevice].systemVersionfloatValue] >= 9.0) {

UIApplicationShortcutItem *shortItem = [launchOptions objectForKey:UIApplicationLaunchOptionsShortcutItemKey];

if (shortItem != nil) {

_options = launchOptions;

returnNO;

}

else

{

//非快捷项启动

_options = nil;

returnYES;

}

}

else

{

//不支持3D Touch

_options = nil;

returnYES;

}

总结:1、项目中很有必要把Crashlytics 或者 Bugly添加进去,免得出现我这种看不到崩溃日志的尴尬局面。

2、以后在使用苹果新技术的时候务必记得进行版本判断。

感谢用手机帮我跑app的各位朋友。


    关注 iOS开发笔记


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册