如何使用Swift 4添加FaceID / TouchID

FaceID和TouchID可以在应用程序中使用,以验证用户身份以进行应用程序内购买或访问个人信息或更多。 检查钱包应用程序,几乎所有应用程序都启用了TouchID。 好的,让我们看看苹果对这些身份验证机制的看法。 要求用户仅进行身份验证以换取价值,例如个性化体验,访问其他功能,购买内容或同步数据。 如果您的应用程序需要身份验证,请保持登录过程快速,轻松且不干扰用户,以免影响应用程序的使用乐趣。 尽可能支持生物特征认证。 人脸ID和触摸ID是人们信任的安全,熟悉的身份验证方法。 嗯!! ..听起来很有说服力。 让我们看看如何将TouchID和FaceID添加到应用程序中。 第一项工作是将LocalAuthentication导入到应用程序。 然后,我们创建了一个LAContext对象,该对象将提供一个UI,用于评估身份验证策略和访问控制,管理凭据以及使身份验证上下文无效。 在为TouchID / FaceID身份验证添加任何代码之前,请不要忘记添加#available(iOS 8.0,macOS 10.12.1,*) 。 iOS 8以下版本不支持它们。添加案例后,我们必须检查是否可以评估特定策略,此处是使用生物识别技术对其设备进行身份验证。 该块完成后,我们可以运行评估策略以获取用户身份验证/同意。 用户验证后,继续修改UI或执行操作。 等待,如果成功进行身份验证,如果要更新UI部件,请记住始终使用DispatchQueue.main.async运行这些任务。 UI更改必须在主线程中运行。 这是代码, //此框架包含身份验证帮助程序代码 导入LocalAuthentication 类ViewController:UIViewController { @IBAction func touchIdAction(_发件人:UIButton){ 打印(“您好!!。您已经单击了触摸ID”) 让myContext = LAContext() let myLocalizedReasonString =“生物特征认证测试!” var authError:NSError? 如果#available(iOS 8.0,macOS 10.12.1,*){ 如果myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,错误:&authError){ myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,localizedReason:myLocalizedReasonString){成功,在 DispatchQueue.main.async { 如果成功{ //用户验证成功,请采取适当的措施 self.successLabel.text =“太好了!…用户成功通过身份验证” }其他{ //用户未成功通过身份验证,请查看错误并采取适当的措施 self.successLabel.text […]

重新设计的结帐功能,转化率提高了5%以上

2.本机功能 使用本机平台,我们可以利用iOS功能,例如钥匙串。 这意味着,如果客户的钥匙串中存储有来自您网站的登录名,则他们可以通过使用TouchID或FaceID进行身份验证来登录。 此外,我们现在保留所有用户首选项。 这意味着,一旦客户(例如)选择了带有ING的iDeal作为他们的首选银行,那么下次他们开始结帐时,这将已经预先填写。 他们的首选运输方式也是如此。 最后,结帐也更加灵活。 我们可以更轻松地为每个国家/地区和品牌设置不同的订单或特定领域。 3.现代设计 应用程序设计标准正在不断发展,作为一个平台,我们非常关注现代和高质量的设计。 现在,新的结帐设计通过采用更多基于卡片的设计方法来遵循最新标准。 接下来,我们对结帐采用了Highstreet运动设计标准。 这意味着,与应用程序的其余部分一样,结帐视图现在可以无缝地从一种状态过渡到另一种状态并设置动画。 换句话说,结帐现在提供了我们旨在为应用程序的其余部分提供相同的“高级”体验。 我们增加了触觉反馈:当您拨动开关或按下重要按钮时,我们使用iPhone中的主题引擎让用户真正感受到开关的感觉。 最后,我们还为结帐添加了更多图标。 例如,我们有用于Paypal,Mastercard,iDeal等的徽标。 总体而言,新设计感觉更快,看上去更干净并且组织得更好。 不仅如此,我们还为您提供了我们创建视频的新结帐的快速概览。 看一看。 4.最佳的可维护性 现在,结帐已成为我们本机代码库的一部分,它的最后一个大好处是它将与我们的持续发布计划一起使用,因此我们可以更轻松地对其进行改进。 在测试期间,这已经导致了一些调整。 那么,更好吗? 您说的好消息是,但我们如何知道新的结帐实际上更好呢? 为了得到答案,我们将A / B测试框架集成到了代码中。 因此,过去几个月来,新结帐已在Omoda和Scotch&Soda进行了全面的A / B测试。 我们很高兴地报告,新的结帐在统计上比以前的版本好5%。 每月有很多订单。

UITableViewCell配置实践

假设我们的足球俱乐部模型具有以下界面: 足球俱乐部数据模型 根据俱乐部的属性值,我们的业务逻辑应确定进度的颜色和相应的装饰文字(正,负或破折号)。 1.门面式单元 苹果公司提供的本机UITableViewCell正是这种样式。 它提供了3个公共访问器来呈现内容: textLabel , detailTextLabel, imageView 。 但是,通常,我们需要更多的UI元素和自定义。 因此,我们可以将子视图添加到单元格的内容视图中,也可以创建UITableViewCell的自定义子类并添加必要的公共属性: 外墙样式的单元头文件 因此,业务逻辑由其数据源在外部进行管理: 外墙样式单元格配置 用户选择将按照以下方式处理: 外墙样式的用户选择逻辑 外墙风格的优点: 本机样式(Apple提供的样式)。 简单灵活,将来可以支持。 单元从外部填充,对业务逻辑一无所知。 外墙样式的缺点: 所有访问器都是公共的,这提供了低级别的封装。 要确定选择哪个足球俱乐部用户,您必须在数据源中执行其他搜索操作。 在动态数据更改的情况下,对数据源的附加搜索似乎是不可靠的,并且对于数据源不是PODS(普通旧数据源😏)的情况则很复杂,即它包含许多不同的模型,部分并且具有不均匀的结构。 2. VIPER样式的单元 我想用这种方式命名这种样式,因为它具有VIPER拱形固有的一些功能。 Cell仅提供设置值的公共方法,所有访问器都封装在“ .m”文件中: VIPER样式的单元公共API 在单元的实现中为访问器设置了相应的值。 从外面看起来像: per蛇式电池配置 VIPER风格的优点: 最高级别的封装。 单元从外部填充,对业务逻辑一无所知。 VIPER风格的缺点: 1.对于具有大量UI元素的“超载”单元格,与fe Facade样式的单元格相比,您的头文件将是双倍大小的(要设置标签的字体,文本和文本颜色,您必须向VIPER添加3种单独的方法样式的单元格公共API)。 在这里,我只引用Robert C. Martin在他的“ Clean Code”一书中提到的第4个简单设计规则: 最小的类和方法。 高等级的方法有时是无意义的教条主义的结果​​。 …我们的目标是使整个系统保持较小,同时还要使函数和类保持较小。 2.由于它不存储指向模型的指针-您将必须通过在数据源中进行附加搜索来确定选择了哪个足球俱乐部用户。 3.通过复杂数据源进行其他搜索会降低将来对应用程序的支持的简便性。 3. MVVM样式的单元 这种风格的主要特点是: 1)使用ViewModel,它关心业务逻辑并用数据填充单元格; […]

介绍InstaSports重新设计和推送通知

我们一直在测试改善InstaSports体验的新方法,以帮助足球迷以有趣,轻松,自然和引人入胜的方式与运动队的内容捕捉并分享特殊时刻。 今天,我们将介绍完整的重新设计和推式通知。 您可以立即下载新版本 :http://apple.co/2hCtLrM 推送通知是现代应用程序通信的一部分,可帮助粉丝在正确的时间获取正确的信息,从现在开始,InstaSports可使粉丝通过推送通知获取有关您的团队比赛的新皮肤包,新功能以及其他相关信息。 在接下来的几个月中,我们将通过实时足球比分,继续改善有关游戏,位置和照片相关性的推送通知体验。 继续分享足球爱 向我们发送您的反馈,非常重要: hello@instasportsapp.com 新设计

如何在3天内开发整个应用程序。

有时,您只需使其简单即可。 首先让我讲一个有关我如何产生这个想法的故事。 在品格,方式,风格,所有方面,至高无上的就是简单。 —亨利·沃兹沃思·朗费罗 我有几个项目都很庞大,我们在这些项目上工作了好几个月。 距离我们终于可以启动这些应用程序项目还有几个月。 这可能会让人筋疲力尽,尤其是当进度真的很慢时。 不要误会我的意思,我喜欢编码,并且很高兴能成为这些项目的一部分。 但是,仍然有时间将一些东西放在那里! 我观看了Gary Vaynerchuk先生录制的视频,他在视频中谈到了说唱歌手和音乐。 他说,如果他会成为一名说唱歌手,他只会每天或隔天放一首歌。 那么,为什么不在“应用程序开发”区域中这样做呢? 我开始考虑自己会用和需要的一些应用程序。 当我和我的朋友去体育馆时,我们总是将自己的场景和代表写下一本小书,那为什么不为此制作一个简单的应用程序呢? 我知道有很多应用程序可以跟踪您的锻炼情况,但是它们总是给您留下很少的空间来写一些笔记。 (如果您认识一个好人,请在Instagram上给我dm) 然后,我才开始进行一些设计 ,目的是使它们尽可能干净和简单。 结果如下: 现在,我必须编写此应用程序的代码。 这个程序有两个控制器。 在第一个控制器中,您可以查看所有锻炼的确切日期。 当您按下一个控制器时,您可以看到在该锻炼中完成的所有锻炼。 另外,您可以在每个练习中添加一些注释。 我花了一天的时间在应用程序中实现设计,而花了一天的时间来了解其背后的逻辑。 此应用程序将所有数据存储在核心数据中,因此它们会永久存储在您的手机上。 您可以将它们保存在服务器上,但我只是想看看是否有人在使用该应用程序。 以后我仍然可以添加此功能。 由于我没有徽标的设计师 ,所以我在几分钟内就使用Adobe Experience Design创建了这个简单的App Icon。 受说唱歌手鲁斯专辑封面的启发,我刚刚制作了这个简单的徽标。 然后,我必须与真实用户一起测试该应用程序。 我将其上传到Apple的测试服务Testflight,并将其发布在我的Instagram故事中。 一些人回答说他们想测试它,并给了我一些很好的反馈。 我必须在几分钟内修复一个错误,因此您可以将其视为4天的开发。 然后,我只是在我的Instagram帐户上进行了一些简单的促销,以吸引一些人使用它。 它现在在App Store上是免费的,请随时下载并尝试🙂 我从中学到了什么? 简单一点就可以了! 感谢您阅读本文! 你可以在这里和我说话-> Instagram

安装Cydia iOS 11.3的方法

我要说的是iOS 11.3的发布,这是因为Apple昨天向开发人员发布了iOS 11.3的第五个Beta更新。 似乎在最新的Beta中没有添加任何新功能,但官方发行说明显示该功能包含一些重要的错误修复。 如果有人有兴趣安装Cydia iOS 11.3 ,那么这个合适的地方可以参观。 如前所述,iOS 11.3的第五个beta版本已经发布。 注册开发人员可以通过空中更新机制或使用iTunes在其iPhone,iPad和iPod touch设备上安装此新发布的软件版本。 但是,在互联网上找到其余的内容会更加容易,让我们开始了解iOS 11.3越狱问题。 iOS 11.3越狱的最新消息 如果您是寻求越狱的人,那么您已经知道阿里巴巴潘多拉实验室的开发人员团队已经成功越狱了iPhone X上的iOS 11.2.1。此外,他们已经在其上安装了Cydia,并且越狱似乎完全是不受束缚的越狱。 如我们所知,他们不会向公众iDevice用户释放jailbraek。 这次越狱演示的一周后,越狱社区的一名新iOS黑客已经能够在iOS 11.2中找到新的漏洞利用程序,并且他计划发布该漏洞利用程序。 不幸的是,该漏洞利用已经存在于iOS 11.2.5中,因此,如果越狱开发人员可以为iOS 11.2完成新的越狱工具,则它将不支持11.2.6及更高版本。 我们可以安装Cydia iOS 11.3吗? 在这种情况下,越狱iOS 11.3并不是那么简单。 现在您知道Apple已经关闭了离iOS 11.3越狱最近的大门,越狱社区应该不得不等待新的漏洞利用程序出来。 除此之外,所有成员都必须等到iOS 11.3正式发布,因为正式版本比beta更稳定。 发行后,我们将有机会安装Cydia iOS 11.3。 你怎么看? 让我们知道

夏日5-程序化UIStackView

今天,我为Spotify应用程序完成了UI。 我学习了如何以编程方式使用StackViews。 我阅读了StackViews上的Apple文档,以更好地了解如何使用它们。 这是文档的链接: UIStackView 堆栈视图使您可以利用自动版式的功能,创建可以动态适应……的用户界面。 我开始真正喜欢以编程方式编写布局。 构建视图肯定比使用Storyboard花费更长的时间,但是不必笨拙地拖东西或等待Storyboard文件加载真的很好。 另一个明显的优点是合并程序代码的方法更好,但是由于我自己进行过该项目,因此尚未看到该优点。 这是使用程序化StackView更新的UI: 我也开始研究CoreData。 我已经为代码中的所有对象创建了一个模型。 这是完成的模型: Github链接: harrysummers /无限图书馆 通过在GitHub上创建一个帐户为Infinite-Library开发做出贡献。 github.com

通过Appium实现iOS并行化-一种优雅的方式

没有值得拥有的东西,变得容易。 直到2017年6月,iOS Parallelisation也是如此。 XCode的限制是每个运行者仅允许一个模拟器,这是UI自动化开发人员的主要限制,这导致反馈周期变慢。 进行15个小时的约500次测试的回归套装只是一种常态。 在您决定去还是不去之前十五小时! 随着“移动优先”或“仅移动”趋势的发展,IOS自动化很快成为加快发布周期的瓶颈。 然后,Facebook的FBSimulatorControl带来了一线希望。 FBSimulatorControl是一个macOS库,用于同时管理,引导和与多个iOS模拟器进行交互。 尽管该解决方案非常出色,但对于围绕Appium和Cucumber构建的自动化框架却很少使用。 将数百个测试迁移到该框架是一个成本更高的解决方案。 这使UI自动化开发人员充满信心,认为iOS并行化是可能的,而Apple的支持将指日可待。 年份2016 在TestVagrant,与Cucumber和Appium一起工作时,我们一次又一次地面对多个客户的相同问题。 我们如何将功能/测试分发到可用设备上? 我们如何在所有可用设备上运行所有功能? 我们如何运行诸如Driver-Customer之类的应用间场景? 我们如何自动检测和管理设备以及维护Appium服务器和Webdriver实例? 我们如何构建有助于快速决策的报告? 我们如何鼓励很少或没有编程经验的qa为自动化做出贡献? 到2016年底,我们已解决了大部分问题,但有些零散的问题。 然后,我们意识到这些不仅是我们面临的挑战,还是整个致力于黄瓜和Appium的社区的绊脚石。 我们将所有解决方案归为一个单一的框架,称为 Optimus,一个开源的移动自动化框架。 Optimus Framework是一个包含多个项目的生态系统,它可以 自动发现已连接的设备(物理设备,仿真器,模拟器) 以多种模式运行黄瓜功能; 分布和碎片化。 运行应用间测试 生成近乎实时的报告,以加快分析速度。 在过去的两年中擎天柱 演变为适用于Appium和Cucumber的近乎完整的移动自动化框架。 但是它错过了一项关键功能,即并行运行iOS测试。 年份2017 终于在2017年,XCode正式在单个iOS主机上支持了多个模拟器,并且Appium社区足够快地支持并行iOS测试。 然后,社区中出现了一些解决方案,使iOS并行化成为可能,但是设置很麻烦,例如 为连接的设备管理多个WebDriverAgent。 通过唯一的服务器实例路由Appium命令。 作为质量检查人员,我们认为应该减轻设置方面的麻烦,并且不应成为自动化的障碍。 Optimus提取了所有设置机制,并允许团队在几分钟内建立Device Lab。 通过对擎天柱的一些调整,我们确定可以在iOS模拟器和设备上并行运行黄瓜功能。 擎天柱3.0 借助Optimus 3.0,自动化团队现在可以在iOS设备上并行运行其测试服,而无需担心基础设置。 这是它的一瞥。 方便的资源 Optimus — https://github.com/testvagrant/optimusTemplate Wiki-https://github.com/testvagrant/optimusTemplate/wiki Gitter — https://gitter.im/optimus_support/optimus […]

如何使用谓词[Swift 3]在核心数据中[过滤数据]

我想做的事: 我想在细分中选择商店的名称,并仅过滤出该特定商店中的商品。 示例: “我只想在亚马逊上看到商品” 解: 我在Discord中的小组成员之一,名为ValentinasM。 他教我这种方法。 您只需要在您的段代码中实现此代码。 这意味着,它只会仅显示亚马逊商店中的商品。 toStore在项目的关系中。 .name在商店实体中。 最终结果: 所以现在当我按亚马逊时 ,它只会显示亚马逊中的项目。

苹果清理Appstore

9月7日,Apple开始审查应用商店中的所有应用,以查看其是否正常运行。 你猜怎么着? 我已经从苹果公司得到警告来更新我的一个应用程序。 您看到最右边的那个吗? 这是一款旧游戏,我已经2年没有更新了。 它没有任何收入,但我只是把它留在那里。 如果我不更新它,Apple应该将其从应用商店中删除。 这不再属于应用商店。 它根本不起作用,实际上它崩溃了,我很早以前就应该将其删除。 这是来自Apple的详细警告: 这对您意味着什么? 这意味着您需要使您的应用程序保持最新状态,并符合最新的IOS版本和准则。 这反过来是个好消息,因为苹果肯定会淘汰成千上万个(即使不是成千上万个)混乱的应用程序商店,填补了本应由认真的应用程序构建者采用的搜索结果。 这是苹果公司对流程的评价(https://developer.apple.com/support/app-store-improvements/): 此过程何时开始? 我们将从2016年9月7日开始审查和从App Store中删除应用的过程。 哪些类型的应用程序会受到影响? 将对App Store中所有类别的应用进行评估,以确保它们能够按预期运行,遵循当前的审核指南并且不会过时。 如果我的应用发现问题,该怎么办? App Store小组将与您联系,并请您进行必要的更改以使您的应用程序保留在App Store中。 但是,启动时崩溃的应用程序将立即从App Store中删除。 我需要多长时间进行更改? 系统将要求您在30天内提交更新,以将您的应用保留在App Store中。 如果您无法在此时间段内进行更改,则您的应用将从应用商店中删除,直到您提交更新并获得批准。 请注意,启动时崩溃的应用将立即被删除。 如果我的应用程序被删除,我的应用程序名称将可供其他开发人员使用吗? 否。从App Store中删除应用程序后,这些应用程序不会从您的帐户中删除。 您的应用名称将继续与您的应用关联。 如果我的应用程序被删除,当前用户是否可以访问我的应用程序? 是。 您的应用将为当前用户保持全部功能。 他们将不会受到服务中断的影响,并且仍然能够购买应用程序内购买。 但是,我们建议您尽快更新您的应用程序,以便在App Store上将其恢复,并确保其功能正常并吸引新老客户。 我该怎么做才能帮助我的应用为将来的更改做好准备? 作为最佳实践,请阅读最新的《 App Store审查指南》,并确保您的应用遵循这些指南。 我们还建议您解决所有功能问题并定期更新应用程序以修复错误,提供新内容,提供其他服务或进行其他改进。 如果您不再更新应用程序,请考虑将其从App Store中删除。 我个人为此向苹果致敬,我将开始我自己的评论,并删除我认为不属于应用商店的应用。 让我们摆脱3到4年前我们不再更新的那些旧的糟糕的应用程序。 想了解更多有关应用程序的信息,请访问我的网站:http://www.appsonite.no