彩票走势图

如何将你的应用程序安全更新到iOS 10

原创|使用教程|编辑:黄竹雯|2016-08-30 17:26:16.000|阅读 275 次

概述:随着iOS 10即将到来,是时候快速复习如何安全更新你开发的iOS应用程序了,这样它就能以最新的iOS版本以及你可能支持任何以前的版本运行。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

如何将你的应用程序安全更新到iOS 10

在我上一篇文章中,我强调了一些在iOS 10推出的开发者可以利用的新功能。将版本冲刺到最新和最好的是很有趣,然而你也需要确保你的应用程序是全线更新的。这意味着需要检查任何过时的方法或类,并验证仍在运行iOS现有版本的用户被继续维护。

在你翻看所有的更新记录之前(如果今晚你无法入睡,这是我强烈建议的),有几件事情你可以做,以确保你的应用程序准备好过渡到iOS 10。

小故事:很多年前,在一个遥远的星系,我以在几十万的月活跃用户附近的东西创建一个iOS应用程序。我建立、测试和部署最新iOS 5支持的更新。我和一些同事庆祝其发布,但几小时内,我从Apteligent得到事故通知。原来,我用了一个只适用于iOS 5的方法,没有妥善处理,于是,由于我的用户群中30%的人使用iOS 4或更早版本,应用程序崩溃了。哎!不用说,我的测试变得更加严格,(注意:无耻的插在前面)我很高兴我安装的Apteligent快速提醒了我,但这是一个惨痛的教训。不要让这种事发生在你的身上!

API的可用性检查

当在iOS 10中构建新的API时,你能够确保你的应用程序仍然可以在旧版本上运行的最好的办法就是做运行时API检查。这将确保你将要在当前运行的设备上调用的类或方法。如果你想在iOS 9中调用iOS 10的方法,你会遇到麻烦(见以上我的伤心故事)。

对于类,这是一个简单的检查,看起来就像这样:

if(NSClassFromString(@"MSMessage")) {
    // This class is available, go ahead and do something with it
} else {
    // This class is not available, handle it appropriately
}

或者,如果你更喜欢Swift:

if #available(iOS 10.0, *) {
  let message = MSMessage()
} else {
    // This class is not available, handle it appropriately
}

如果类(MSMessage)是弱联系,block 外部的MSMessage引用在前iOS 10设备上不会导致你的应用程序立即崩溃。这使得错误更难找到,并会让测试忽略更多的问题。即使你避免了崩溃,你的用户体验也会迅速降低,因为你的代码不能识别MSMessage功能的缺失。这使得实施新的功能时,处理前、后iOS 10的情况变得非常重要。

对于现有的类的新方法,有另一个简单的检查:

// Check if new API is available
if ([existingClassObject respondsToSelector:@selector(newMethod:)]){
    // Yes, we can safely call this method
    [existingClassObject newMethod:@”something”];
} else {
    // The new method is not available, handle accordingly
}

在Swift中,你可以使用上述相同的#available方法,如果你知道你的方法需要的SDK,这会特别有用。否则,你可以使用以下所显示的等效方法调用:

// Check if new API is available
if existingClassObject.respondsToSelector(Selector(“newMethod”)){
    // Yes, we can safely call this method
    existingClassObject.newMethod()
} else {
    // The new method is not available, handle accordingly
}

我们首先检查看看如果我们调用它,该方法是否会响应,如果响应,我们就继续并且安全地调用它。这个简单的条件也在iOS 9中处理的事件,其中该方法将不响应,在iOS 10中,该方法可以被调用。

如果你试图在iOS一个不受支持的版本中调用newMethod ,你的应用程序会由于NSInvalidArgumentException而崩溃。这是一个关于iOS最常见的事故,它可以用这种简单的检查来避免。

关于宏的一个注记

宏是由编译器执行的代码位。通过iOS系统,你可以使用这样的东西:

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_10_0 
    // iOS 10+ code 
#endif

许多开发者看到了这一点,把它添加到他们的代码却没有完全理解发生了什么,但这不应该被用来确保用户在iOS 10。这就是为什么:

么,但这不应该被用来确保用户在iOS 10。这就是为什么: 如果应用程序的部署目标(deployment target)是大于或等于iOS 10,block内的代码只会被编译。更有可能的是,你的应用程序的部署目标是低于目前的SDK。例如,你的部署目标可低至iOS 8,因为你仍然要支持现有的用户。

如果你使用iOS 8以上支持的宏,由于宏在编译时执行的所有用户,block内的代码将被省略。你不会看到任何警告或得到任何错误提示,你的代码将不会被包含在你的应用程序中!

为了管理的弃用和新的API,最好在运行时做代码检查以容纳你的应用程序支持的所有的操作系统版本和设备。

注意Deprecation警告

在一点或另一个上,每个开发者都沿着“别担心,我后面会处理”的套路在走。你可能已经在Xcode看到deprecation警告,让开发商知道方法或类找到了出路。在某个点上的代码将被删除;如果它试图在一个新的操作系统上引用被删除的方法,你的应用程序将崩溃。

如何将你的应用程序安全更新到iOS 10

一般来说,这不是一个短期的过程。苹果通常会用“过时的”类或方法发布很多大的操作系统,在它实际上被删除之前,这给了开发者时间来适当地更新他们的代码。无论如何,时间终于来了,所以它是你的雷达上应保留的东西。

在iOS 10有极少数的类/方法移除,这意味着对大多数开发者而言这些都不是问题,但是要检查更新记录,以及关注你的编译器警告以防万一。

测试所有支持的iOS版本

在一天结束时,它将是适当的测试,以验证你的应用程序可以在你支持的所有的设备和操作系统上运行。不要落入“它能在我的设备上运行,所以它是没问题的”的陷阱中。不幸的是,即使是最好的测试也不能抓住一切,于是Apteligent来了。我们的SDK允许你在你的应用程序上监控崩溃和性能问题,快速追踪测试忽略的错误。

完成

我强烈建议抢先安装iOS的最新版本,这样你的应用程序就可以利用苹果所提供的最新的功能。只要确保你没有忽视其余部分用户群使用的应用程序的稳定性和性能。只需要一个失败的发布就可能减少你辛辛苦苦赚来的五星评级,所以请彻底的测试、测试、测试。

遵循这些准则,你的应用程序都将在今年秋季iOS 10正式启动时被设置完成。

本文翻译自:

 

PS: 关于移动开发,这些产品你可以关注>>
关于移动开发的最新资讯和产品推荐,请<>!

标签:移动开发iOSSwift动态更新

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP