在iOS项目上使用Travis-CI和Fastlane设置CI

持续集成(CI)是一种很棒的软件工程实践。 它要求开发人员在每次提交之后频繁提交。 这样,可以自动运行测试,计算覆盖率,执行静态代码分析等,以确保每次提交都不会破坏构建过程并且不会带来副作用。 如果提交破坏了构建,则进行更改的人员将收到一封电子邮件,需要检查并修复构建。 通常,在构建结束时,会创建一个测试版本。 通常,这就是过程,但是各个公司的过程可能有所不同。 这种工作流程的好处来自频繁的集成-您很快就会发现问题所在,并有机会快速进行修复。 团队越大,拥有这样的自动化集成过程就越重要,因为在每次提交之后,都有可能破坏代码库。 在本文中,我们将使用Travis CI和Fastlane为一个开源iOS项目设置CI。 目标是在GitHub存储库上的每次提交上运行CI,并在自述文件部分中显示有关构建状态和覆盖率的信息。 实作 特拉维斯CI 首先,您需要在GitHub上拥有一个带有单元测试的开源iOS项目。 在这篇文章中,我将与即将发布的iOS框架GirdersSwift合作。 第一步是通过单击“使用GitHub登录”按钮将GitHub帐户连接到Travis CI。 系统将要求您提供对Travis CI的某些权限,以使他们能够访问您的开源存储库。 Travis CI对于开源项目是免费的,但是对于商业项目也有一些付费计划。 成功注册Travis CI后,您应该在仪表板中看到所有项目。 找到您要为其添加配置项的配置项,然后启用绿色开关。 这就是我们目前在Travis CI上需要做的所有事情。 有了这个小的更改,我们已经告诉Travis CI,它应该为GirdersSwift回购运行连续构建,但是我们仍然没有告诉它该怎么做。 Travis CI不知道它是iOS,Android,Java还是其他类型的项目。 它还不知道是否应该运行测试,计算覆盖率等等。 我们通过在GitHub项目的根目录下创建.travis.yml文件来提供此信息。 让我们看看这个文件应该包含什么。 osx_image:xcode9.3 语言:迅捷 脚本: – fastlane ios覆盖率 如您所见,我们告诉Travis CI,它应该使用Xcode 9.3运行构建,并且语言是Swift。 在脚本部分,我们提供了每次构建后都需要执行的步骤。 在这里,我们使用Fastlane进行测试和覆盖。 快车道 Fastlane是一个出色的工具,可以自动完成与iOS开发相关的所有繁琐工作,从测试,构建,创建发行版到部署到商店。 它基于在Fastfile中定义的通道的概念。 您可以在一个泳道中定义几个动作,并且已经开发了动作,这些动作是我们iOS工程师最需要的。 通过在项目的根目录中键入fastlane init ,为项目启用fastlane。 您也可以输入您的开发者帐户信息,但这不是必需的。 这将创建一个Fastlane目录,其中包含Fastfile。 现在,让我们定义我们的覆盖范围,它将用于执行连续构建。 default_platform:ios […]

我们新的视频消息传递实验的特殊设计说明了

为了使对话的体验量身定制,我们提出了一个有趣的界面,该界面将所有微型视频按时间顺序排列到水平卷轴中。 事实证明,这种布局使每个视频都感觉与其他视频有联系,就像一个视频是对前一个视频的答复。 就像一场真实的谈话。 ☝️比发短信更轻松,更快,更有趣 速度很重要,特别是与朋友一起闲逛时。 我们认为这很关键,您应该能够以自己想像的速度尽快说出任何话。 冲动的,就像我们在餐厅或酒吧里闲逛时彼此交谈的方式一样。 假设您还记得一次愚蠢的经历。 只需拨出该应用程序,按住那个蓝色大按钮,提醒您的朋友“一次”,然后释放即可发送。 communication主要的交流方式会跟随您 对我们来说,设计一种与朋友交谈的好工具的关键是使核心通讯方法始终可用。 无论您在应用中的哪个位置,这个蓝色大按钮(用于录制迷你视频)都会跟随着您,以防您想说些什么。 😫说出您的想法 每个迷你视频最长可以为一分钟。 一分钟而不是流行的10秒或7秒似乎是对话的理想选择。 它为人们提供了足够的时间讲故事,开玩笑并轻松地互相交谈。 beta我们的Beta测试人员每天观看40个视频,每天在该应用中花费近6分钟 Beta测试中有新婚,成群的朋友和夫妇。 甚至整个家庭。 他们告诉我们,现在这是彼此交流的首选方法,因为它非常轻松,有趣且易于使用。 现在,对我们许多测试人员来说,发短信已经过时了。 试试看,很想阅读您的反馈 我们今天将开放iOS的Beta版,以测试更广泛的受众。 我们需要您的帮助来确定这种想法是否值得进一步追求。 您可以在AppStore上免费下载: https://itunes.apple.com/app/id1153841944

如何在iPhone和Android上激活GuruWalk通知!

如果您想阅读西班牙语的帖子,请单击此处。 你好大师! 没有比差旅者在聚会地点等你的时候差的评论还不错。 这就是为什么我们实施了一种通知系统,当您收到旅行者,预订或取消的消息时,该通知系统可让您在手机上立即知道。 如果您使用的是Android系统,则只需在Internet浏览器(Chrome等)中输入GuruWalk。 您将很快看到一条横幅,邀请您单击以激活通知,因此您只需要单击接受即可! 要在iPhone上激活它们,则有所不同。 这就是为什么我们创建此手册来向您解释如何从您的电子邮件中逐步配置它们的原因。 我们走吧! 将GuruWalk保存为新联系人 首先要做的是添加“ GuruWalk”作为新的联系人姓名,并将info@guruwalk.com作为该联系人的电子邮件放在适当的字段中,如下所示: 联系人保存后,请输入您的电子邮件以进行下一步。 将GuruWalk添加到VIP列表中 在邮件的第一页,称为“邮箱”,您将看到一个带有蓝色星星的选项, 称为VIP ,单击该选项,然后按“添加VIP”按钮。 查找您先前保存的GuruWalk联系人,然后单击它。 该联系人将保存在您的VIP列表中。 然后,您将看到一个名为“ VIP通知”的按钮。 点击它。 现在,您可以选择通知在移动设备上的显示方式,例如:带有声音的横幅广告……我们强烈建议您激活“在锁屏上显示”选项。 这样,将更容易收到通知。 就是这样! 很简单,不是吗? 🙂 我们希望这项新功能可以让您更好地控制自己的预订。 在🙂下面留下评论,让我们知道您的意见 很快再见,以获取更多提示!

嘿,谢谢您的教程,因此我们也可以像您一样优化构建过程,但并非如此……

嘿,谢谢您的教程,因此我们也可以像您一样优化构建过程,但不适用于我。 如果您看看我在做什么错,我将不胜感激: 我使用en1而不是en0的原因是因为我在Wifi网络而不是以太网上进行测试。 这是错误: 确保以下各项: –节点服务器正在运行并且在同一网络上可用—从react-native根目录运行“ npm start” 在AppDelegate中正确设置了节点服务器URL 我可以看到该IP地址与“设置”->“网络”中显示的IP地址相同。 手机和计算机也使用相同的wifi网络。 先感谢您。

现代可可观点中的一项习题

最初发布在这里: https : //avaidyam.github.io/2018/03/22/Exercise-Modern-Cocoa-Views.html 就像我在上一个“片段”中所说的那样,最近,我想开始为Parrot添加“热键”支持,并且意识到我不喜欢任何现有解决方案: 使用MASShortcut尝试并证明可在ObjC-land工作的MASShortcut或ShortcutRecorder 。 使用新的但未经验证的Swift热键记录器(那里有一些)。 自己动手(可能以某种方式使用危险的专用SPI)而不进行任何测试! 显然,我选择了#3。 在这里,我们进入了激动人心的传奇的第二部分,您在其中见证了我打破AppKit和WindowServer并引起从事上述组件工作的工程师的愤怒和愤怒。 我希望你带了爆米花。 我想澄清一下,我们将只构建一个管理单个快捷方式的独立控件。 我希望Parrot与大多数应用程序一样,将不需要像Final Cut Pro这样的命令编辑器,该命令编辑器是专门为视频编辑器而专门设计的,该视频编辑器具有两个以上的键盘和两个以上的两只手可以匹配。 我们的最终结果将是看起来,听起来和感觉像这样,而不是: 在进入精妙的手工对编程之前,如果您想直接跳转到带注释的最终源代码,我将在此处提供一个快照。 这是整个最终产品,精确到1500 LOC,包括之前“ episode”中的代码-相应的键盘快捷键功能! 如果您认为这应该是正式的存储库而已,请通过Twitter或Github @avaidyam与我联系! 现代观点原理 子类化View或ViewController 我们应该回答的第一个问题是,我们要构建什么样的组件? 这个问题的答案是什么决定了我们是什么样的子类,以及我们与应用程序中其他组件的交互模型。 当您构建一个采用程序输入并向用户显示内容的分立组件时,对于控件而言,当您接收用户输入并显示程序输出时,您应该将View子类化。 除此之外的任何东西都应该是ViewController的子类,介导其他组件之间的交互的组件,或处理模型/数据库对象的组件,或者实际上只是其他任何东西。 View应该可以在您要立即构建的环境之外的其他环境中轻松重用,但是ViewController不一定能够履行此合同。 例如,联系人头像最好是View子类,但是联系人头像选择器应该是ViewController ,因为它不仅显示头像图像,而且还允许用户选择图像,并且可以处理与头像的同步。联系人存储(可能是JSON文件,可能是远程API,或者可能是CNContact )。 在macOS上,如果要构建的组件既包含其他组件(例如ViewController )又包含在Window ,则还应考虑将WindowController子类化-联系人头像选择器可能不符合此条件,但需要联系人编辑器面板联系人头像选择器将是一个ViewController嵌套在姓名,电话,电子邮件和其他可编辑字段旁边。 层数 虽然与年轻的兄弟姐妹UIKit相比, AppKit通常被视为恐龙,但重要的是要知道, UIKit所使用的几乎所有设计模式几乎都来自AppKit ,如果不是,它们最终会回到AppKit ,除了极少数。 例如,由底层CALayer类型支持的UIView的概念与由NSCell支持(而是过去?)的NSControl非常相似。 不同之处在于CALayer实际上是驱动显示内容的呈现而不是UIView的呈现,并且NSCell充当特定事件处理和绘制的“橡皮图章”。 当涉及到层支持的视图时, AppKit实际上有几种模式可以实现此目的: 层托管: self.layer = CALayer(); self.wantsLayer = true NSView拥有CALayer ,并负责创建和管理它。 […]

为什么我喜欢编码

println(“ H​​ello World!”) 我本周刚刚完成了另一个iOS应用的编码。 它应该在几周内进入App Store(App Store审核过程需要这么长时间)。 这是一个ABCs抽认卡应用程序,由我的一个朋友设计,他画了一些愚蠢的动物。 我用Objective-C编写了代码。 自2008年提供iPhone OS SDK(软件开发工具包)以来,我一直在编写Objective-C。我在业余时间从iTunes U的Stanford iPhone Development课中学到了东西。 在上课的同时,我在8个月内制作了自己的第一个iOS应用。 我已经为iOS应用程序编写代码大约五年了,但我仍然认为自己是一个初学者-Apple每年都会更新SDK。 今年是最大的变化-Swift。 我开始在Swift发行之日就开始编写代码,到目前为止,我还没有错过Objective-C的编码。 作为设计师,这是个好消息。 Swift看起来更漂亮,更易于理解-更少的代码编写。 在以后的文章中,我将详细介绍我在Swift方面的经验。 我的代码之旅 在学校里,我正在独自学习代码,以便能够在线展示我的作品-当时我是插图专业。 网络是新的,因此没有像Stack Overflow这样的博客或在线社区。 网络开发也太新了,不足以成为学校的课程。 我是最早学习网络开发的人之一,因此在学校提供课程时,我帮助教了我的同学。 我非常喜欢Web开发,以至于坚持不懈地改变了我的专业。 我不是程序员-我毕业于美术学士学位,重点是电子媒体(交互式设计)。 但是,我职业生涯的大部分时间都集中在前端开发上。 我为我工作的公司写了很多HTML / CSS / JavaScript。 我每天仅靠学习就能掌握自己的编码和编程技术。 我喜欢自己解决问题。 我从大学二年级(1994年)开始使用一种名为HyperCard的Apple编程工具编写代码。 HyperCard开发了许多出色的游戏,例如Myst。 我们的课堂作业包括Edutainment应用程序,作品集,Music Artist Bio等。我喜欢设计体验,设计布局,当然也喜欢编写代码。 没有代码,我的设计将无法正常工作。 当一切都组装好后,最大的感觉就来了。 看到同学们使用我的应用程序真是令人高兴。 我是第一个将视频和音频整合到课堂项目中的人-很高兴看到他们的反应。 我喜欢编写代码,因此使用我制作的产品使人们感觉良好。 通过Twitter @ArtofNor与我联系。

iPad作为我的主电脑

有的人说这是不可能的,有的人保证这是世界上最好的,有的人有使用意愿并且从未尝试过。 事实是,仅仅改变操作系统是不够的,在采用诸如iOS之类的新系统来执行工作流的主要任务时,您还必须改变思维方式。 自2001年以来,我一直是软件开发人员(程序员),并于2003年离开Windows,迁移到GNU / Linux和BSD系统。 2009年,我在Hackintosh上使用Mac OS X,然后在2010年购买了我的第一台11英寸MacBook Air。第一台iPad在其第一版中,我不记得是何时购买的。随着时间的流逝,我逐渐相信如果我拥有必要的应用程序,iPad可能是我的理想电脑。经过其他MacBook,iPad和Chromebook之后,今天我一直在12.9英寸iPad Pro上进行活动,并使用2012 MacMini作为构建和数据服务器。 在浏览互联网时,我们可以找到一些报告,这些报告涉及自iPad Pro推出以来各行各业的一些人,他们在日常工作中加强了对iOS的使用,并逐渐停止使用macOS,以致有些人100%生活使用他们的iDevice。 其中包括Federico Viticci,Fraser Speirs,Ben Brooks以及其他可以在社交网络和博客上找到的故事。 值得注意的是,他们不一定从iPad Pro的发布开始就将iOS视为其主要操作系统,而是从iPad和iOS本身允许最佳执行与日常工作相关的任务的那一刻起。 我不会在这里争辩说每个人都应该做出这样的改变,我只会表明,就我和其他人而言,这是可能的,并且带来了好处–可能不是您的情况。 iOS并不拥有文件管理器,最让人们担心的概念和来自尝试进行此过渡的任何人的最大投诉。 对于那些习惯于以结构化方式组织文件和文件夹的人来说,他们对应用程序对文件的组织感到沮丧,并阻止了他们进行工作。 在这一点上,改变思维方式至关重要,因为完全有可能使用iOS的某些区域作为交换区域(例如,照片)或通过以下方式在不同的应用程序中打开文件并相互转移使用云存储或使用按钮共享您的工作。 想一想今天您广泛使用的软件,并记住它在您学会如何使用时的样子,甚至变得习以为常时遇到的困难,或者如果您以后又使用另一种软件迁移到了现在……您的头脑应该学习iOS的工作方式您的工作流程没有受到影响,或者必须创建一个新的工作流程。 如果您已经在macOS中使用全屏程序,并使用触控板上的手势或键盘快捷键在工作区之间切换它们(我逐渐缩小了在同一桌面上同时打开的窗口的数量),那么当您使用iOS。 我也习惯于在键盘上调用Spotlight并找到所需的内容,快捷键在iOS 10上的工作原理相同。 随着每个新应用专注于iOS的专业使用,过渡变得更加简单。 一个很好的例子是Workflow应用程序,它可以作为iOS的Automator使用,完全图形化,并包含各种动作的“配方”。 它使某些任务的重复工作变得容易得多-对于不认识的人来说值得检查。 专门针对我的领域,任何纯文本编辑器都足以编辑桌面程序,应用,网络和游戏的代码。 我之所以使用Coda,是因为它在iOS 10中比以前使用的Koder应用更加稳定。 它使我可以直接通过FTP,SFTP,SSH或WebDAV访问文件。 当需要查看或测试无法通过浏览器访问的内容时,我可以使用任何远程连接(例如VNC或Chrome远程桌面)来通过macOS Sierra查看我的MacMini。 最终需要代码编译或创建新项目时,仅使用Serverauditor应用程序通过SSH访问并执行必要的命令。 出于安全原因,我还会在Dropbox和Google云端硬盘中保留我正在处理的项目的副本,并在无法连接到服务器时进行访问。 根据项目的类型,可以直接在iPad上执行所有编程,但是我的工作流程已经像今天一样,不必更改它,只需更改一些工具即可。 有人已经问过我“大猩猩的手臂”,这是指在使用过程中举起手臂触摸iPad屏幕的疲倦,我可以说这更多的是习惯它。 习惯于使用键盘快捷键的任何人也几乎不会注意到它。 最麻烦的是屏幕的位置,具体取决于所使用的椅子/桌子,需要进行一些调整(指向Surface Pro!)。 总的来说,iOS已成为我的主要操作系统,而iPad Pro已成为MacBook的替代品。 是的,在很多方面都有很多进步,但是我们不能期望iOS成为macOS,它的建议并不相同,其操作要求想要以专业方式使用它的用户适应于获取最好的用途。 优点 如果这对您来说是决定性因素,那么iPad Pro和智能键盘的重量非常适合放在背包中,甚至放在兼容尺寸的文件夹中。 出色的屏幕分辨率与“夜班”功能相结合,使您可以工作数小时而不会累及您的眼睛,该尺寸还有助于使较大的区域可供代码使用或在侧面使用带有拆分视图的其他应用程序。 快速,流畅的访问和在应用程序之间的切换非常棒,到目前为止,我还没有注意到它的缓慢性。 智能键盘非常棒,响应速度很快,当您习惯了它,并且按键的外形小巧时,它在键入任务时变得更加敏捷。 在连续编程中,电池已使用了两天,当电池电量为10%时,我将其充电–我没有精确测量其持续时间(以小时为单位),但是我们知道这可能会因多种因素而有所不同。 如果您在工作时喜欢听音乐,声音确实非常好而且清晰。 注意不要打扰邻居! […]

拉瓜拉迪克洛尼

“这与旅程有关,伙计” Alcuni giochi sono dei colpi di fulmine:西维多诺,西普罗瓦诺,西阿曼诺·桑萨·里瓦斯,批评家:否决权是不合法的。 取代上古卷轴上的奇瓦瓦人妖,上古卷轴,我们的后代,刺客信条。 不能单独居住,不能随意旅行,不可以单独购买,不可以单独购买,不可以单独购买,不可以单独购买,不可以单独购买,不可以单独购买。 Persino dentro巢穴。 不可复制的个人信息:直觉的直觉,直觉的直觉,直截了当地的直觉,直截了当的直觉。 Poi certo,possono semper piacere或non piacere,严重的错误。 内洛特定人,经典人质,全民公安,马里奥,泽尔达,街头霸王,植物大战僵尸,GTA或俄罗斯方块,不可思议的东西che hanno avuto sullegenerazioni连续视频录像。 Threes!,il gioco di Asher Vollmer,Greg Wohlwend和Jimmy Hinson在categoria中的senza il minimo dubbio:在益智游戏,potenzialmente infinito,realizzato中无法使用和在parecchio impegnativo中。 准时制和准时制,请按时或按时完成。 非因果关系,不履行义务,不当行为,不当行为,不当行为,不当行为等: “ Non ci siamo arresi completamente ma nonèuna cosa che capita spesso nel mondo dello sviluppo dei videogiochi。 原始的原始人,原始的人,普通的人,普通的人,不合法的人 […]

夏日3-程序化TableViewCells

今天,我从事一些工作。 我要做的第一件事是完成Spotify的库下载程序。 下载已登录用户的整个库的功能可以正常运行。 下一步是将所有Spotify相册呈现到UITableView中。 该项目的目标之一是尽可能多地学习,而我想学习的一件事是制作程序化视图。 因此,我决定仅使用编程视图来制作整个应用程序,以应对挑战。 UITableView的设置非常简单。 但是,挑战在于设置UITableViewCells。 这是我学到的方法: 在UITableViewController中注册UITableViewCell。 我的看起来像这样: tableView.register(AlbumsTableViewCell.self,forCellReuseIdentifier:“ albumId”) 2.在子文件中创建自定义UITableViewCell: 关于程序化视图,我还有很多事情要学习,但是我觉得今天是一个好的开始。 Github链接: harrysummers /无限图书馆 通过在GitHub上创建一个帐户为Infinite-Library开发做出贡献。 github.com

必须尝试增强现实应用程序:

AR技术正在成为主流。 增强现实越来越多地用于平板电脑,智能手机等移动设备中,以改变现实世界与数字图像,图形相交和交互的方式。 增强现实被开发为移动应用程序,并被用于结合现实世界和数字组件。 因此,随着iOS 11引入了全新的增强现实应用程序框架,该框架创造性地称为AR工具包。 让我们深入研究顶级增强现实应用程序。 谷歌翻译: 只需对准相机即可立即翻译图像中的文本(38种语言) 应用程序链接:https://itunes.apple.com/us/app/google-translate/id414706506?mt=8 AR测量它: 借助Apple的新型AR技术,MeasureKit使得使用iPhone或iPad的相机轻松测量世界上的不同事物变得非常容易。 应用程序链接:https://itunes.apple.com/app/id1258270451 宜家广场: IKEA Place是第一个家具AR应用程序。 它可以帮助您将IKEA产品虚拟地“放置”在您的空间中。 应用链接:https://itunes.apple.com/us/app/ikea-place/id1279244498?mt=8 堆栈AR: Stack AR是一款AR游戏应用。 堆积尽可能高的积木! 应用链接:https://itunes.apple.com/us/app/stack-ar/id1269638287?mt=8 世界画笔: World Brush是有创造力的人的创意应用程序之一,您可以在现实世界中选择任何画笔进行绘画,每幅画都是匿名的,并保存在创建它的大概GPS位置。 应用链接:https://itunes.apple.com/us/app/world-brush/id1277410449?mt=8 天空指南AR: Sky Guide AR应用程序从未像现在这样令人愉悦且易于使用。 只需将其举在天空上自然发现天体,卫星。 无论年龄和经验水平,它都是一个美好的时光! 应用程式连结:https://itunes.apple.com/us/app/sky-guide-ar/id576588894?mt=8&ign-mpt=uo%3D4 全息: Holo是最好的免费AR应用程序之一,它可以让您创建进入现实世界的动物和超级英雄的全息图。 应用链接:https://itunes.apple.com/us/app/holo/id1194175772?mt=8 2018年人体解剖学图集: 人体解剖学是面向学生,专业人士和教授的3D应用程序。 该应用程序包括完整的女性和男性3D解剖模型。图像与3D横截面以及骨骼和肌肉的交互动画配对 应用链接:https://itunes.apple.com/us/app/human-anatomy-atlas-2018/id1117998129?mt=8 WallaMe-增强现实 WallaMe是与您的朋友共享增强现实消息,使用相机捕获图像并创建增强现实绘图的最佳增强现实应用程序选择。 应用程式连结:https://itunes.apple.com/us/app/wallame-hide-messages-in-real/id963058537?mt=8 嗨伙计, 列表仍在进行中。 因此,如果您想推荐最佳增强现实应用程序。 请在下面的评论部分中分享。