Tag: iOS应用开发

使用Kitura的Server Side Swift入门

服务器端Swift在iOS开发社区中正在蓬勃发展,现在是时候打破其他编程语言和框架的束缚,并以我们心爱的Swift语言实现一切。 有几种服务器端Swift框架可用,但最受欢迎的三个框架如下: 汽 Kitura 完善 有时我介绍了Vapor框架。 这篇文章讨论了如何开始使用Kitura,Kitura是IBM的服务器端Swift框架。 先决条件: Xcode 8或以上 斯威夫特3.0 使用Swift Package Manager安装Kitura软件包: 第一步是使用Swift Package Manager安装Kitura软件包。 在此之前,您需要初始化Swift Package Manager。 创建一个名为“ hello-kitura”的文件夹,然后使用终端进入该文件夹。 一次,在文件夹中初始化Swift软件包,如下所示: 运行“ swift build”命令来构建代码,如下所示: 构建完成后,您可以使用以下命令运行可执行文件。 世界您好! 当您执行代码时,它将在“ main.swift”中运行所有代码。 如果打开“ main.swift”文件,则会发现以下代码行。 打印(“ Hello World”) 这确认您的包已成功初始化。 现在打开您的Package.swift文件,其中包含您需要在应用程序中使用的所有软件包。 默认情况下,Package.swift将包含以下代码行。 导入PackageDescription 让包=包( 名称:“ hello-kitura” ) 如此,您可以看到Package.swift文件没有引用任何包或依赖项。 让我们对其进行修复,并添加对Kitura项目的依赖。 除了Kitura,我们还添加了对HeliumLogger的依赖。 HeliumLogger用于记录从Kitura生成的事件,对调试请求非常有帮助。 对Package.swift文件进行上述更改后,跳至终端并运行以下命令。 快速构建 这将触发构建并下载Package.swift文件中包含的所有依赖项。 一切完成后,您可能会看到类似以下内容的内容。 最后一步是生成Xcode项目,以便您可以在自己喜欢的编辑器中开始使用Kitura应用程序🙂 迅捷包generate-xcodeproj 这将生成Xcode项目。 您可以使用以下命令从终端打开Xcode项目。 […]

寻求沙龙:完整的移动沙龙解决方案

Dcube的另一项主要作品是“沙龙应用程序”。 为什么在有Urban Clap时使用此Salon应用程序? 如果您想在沙龙里放松一下并在他们的位置接受他们的全套服务,但同时又不想浪费时间等待轮到该怎么办? 不用担心,我们有解决方案。 我们的沙龙应用程序。 应用正在管理双向评级。 用户可以在检查其等级和评论后选择沙龙分支机构和美容师。 应用程序也在管理用户评分。 特征 具有价格的目录清单 Gallery展示了真实客户的图片和服务以及评级和价格。用户可以选择多个图片并将其放入购物车。 客户管理 客户数据库已保存,沙龙经理/管理员可以访问以获得更好的销售和客户忠诚度计划。 推送通知将有关任何优惠或节日计划优惠的信息发送给每个已签名的用户。 预约,服务和预订历史 用户预订约会,选择服务。 –用户可以浏览艺术家的各种个人资料,并根据其评分和评论选择艺术家。 –用户可以访问其预订历史记录(如果由沙龙寻求,则可以进行任何预订和提供服务)。 –绿色约会:显示客户何时参加约会 –红色约会:显示约会经过的时间和未出现的用户 –蓝色约会:即将到来的约会 –时间栏:按照一天中的时间 登录 用户登录:登录并注册 –管理员/管理员登录:忽略每个活动。 沙龙和艺术家评分 对每位艺术家的评论以及他们出色的主要服务的描述。 支付网关 已安装现金和卡(MasterCard,Visa&amex)访问支付网关。 超级管理员 超级管理员拥有所有特权。 可以概述沙龙中每个登录名和工作流程的人。 他拥有所有权力。 Dcube可以为您提供相同的模型,并根据您的要求和想法对其进行完全自定义。 我们可以在其中添加员工薪资系统,并使之更加可靠,而且合而为一。 我希望你们喜欢该应用程序的流程和实施。 我们是为iPad制造的。 如果您想要相同或任何定制,我们可以为您提供任何平台,请随时通过http://www.dcubetechnologies.com/#与我们联系。 下次再见:)。

适用于iOS开发人员的WWDC 2018:Siri快捷方式

Apple在2016年发布了SiriKit,作为您的应用程序与Siri一起使用的一种方式。 我真的很兴奋,因为它为用户创造了一种与手机互动的全新方式。 他们不再局限于触摸(手势,力度,键盘)了。 相反,他们最终可以在支持它的任何应用程序中使用自己的声音。 那时,当我沉迷于这个想法时,我意识到,事实并非如此。 SiriKit的使用仅限于6类,即: 讯息传递 VoIP通话 付款 乘车预订 图片搜寻 锻炼 这真烂。 我很沮丧,也没有深入研究它,因为我的名单上没有项目可以从中受益。 快进到2018年。周一,苹果公司在其主题演讲中终于宣布了一种与Siri进行交互的新方式。 它称为Siri快捷方式。 让我们深入研究iOS开发人员如何使用它们。 捷径 那么什么是Siri快捷方式? 它们是Siri可以预测并在Spotlight搜索,锁定屏幕等位置提供给用户的操作。您的应用可以在用户与Siri交互时将这些操作提供给Siri。 例如,当用户在您的商店订购咖啡时,您的应用可以向Siri提供带有订购信息的操作。 随着时间的流逝,Siri将了解用户是否多次执行此操作,并将开始建议您的应用提供的操作。 这样,可以从锁定屏幕订购咖啡。 那不是很好吗? 那不是全部! 用户甚至可以使用这些快捷方式添加个性化语音短语。 因此,下次您告诉Siri“胡言乱语”时,Siri将点您的咖啡。 但是我们该怎么做呢? 快速方法 如果您已经在使用NSUserActivity,则可以使用一行代码使它们符合Siri的预测: userActivity.isEligibleForPrediction = true 但是快捷方式可能更强大。 因此,让我们看看自定义快捷方式是如何工作的。 应用程式结构 和以前使用SiriKit一样,我们需要对应用程序进行Intent应用程序扩展。 该扩展将处理将在后台运行的快捷方式。 此外,Apple建议将扩展程序和应用程序之间共享的代码拆分为框架。 该框架应包含所有管理和捐赠快捷方式的代码。 创建快捷方式 查看您的应用并查看最常发生的操作。 让我们看一下可以播放音乐的健身应用程序。 每当您开始锻炼时,您都想听音乐。 因此,该应用可以向Siri捐赠相应的快捷方式。 现在,只要Siri检测到用户开始锻炼程序,它就可以建议通过您的应用播放音乐。 当然,Siri必须先学习它,因此在Siri提出这些建议之前,必须进行一些锻炼。 我做舞厅舞。 由于我总是从开始就开始练习慢速华尔兹15分钟以进行热身,因此我的应用程序可以创建一个快捷方式,建议您精确地进行此操作并将其捐赠。 在研究如何捐赠快捷方式之前,让我们看看如何创建快捷方式。 首先,我们需要一种新型的意图。 意图是用于与Siri通信的对象。 在我们的案例中,系统未提供此类意图,因此应用必须提供自定义意图。 这可以通过将Intent Definition文件添加到项目中来完成。 […]

App Store展示次数激增的9个原因

如果您在App Store中有一个应用,则很可能会看到偶尔的展示次数激增(有时下载量没有相应的激增)。 这可能会引起您的烦恼,因为您想知道为什么有那么多人正在检出您的应用程序,却很快消失了(以及为什么所有这些人都没有选择下载它)。 虽然后一天是我们很高兴讨论1:1的问题,但以下是您的应用可能会出现展示次数激增或下降的九个原因: Apple在启动时会为新应用提供 7天的人工可见性提升,因此在启动应用时请注意这一点。 相反,这也有助于理解您在第一周后会看到的下降。 应用的关键字排名 更改是造成印象波动的常见原因,因为关键字的排名很容易发生巨大变化,有时似乎是无缘无故的(但由于竞争应用和用户趋势的更改),尤其是在应用的元数据更改后。 如果您的应用程序在类别或国家/地区 排名榜中 排名 ,则排名更改可能会导致应用程序的展示次数大幅波动。 应用商店功能可能会导致您的展示次数猛增(对转化率产生相反的影响)。 竞争的变化可能会通过更多应用在特定关键字上或在热门排行榜中获得的收入高于或低于您的排名而影响您的展示次数。 任何一种营销方式都可以通过以下方式提高您的印象: 越来越多的人点击您的产品页面(请记住,产品页面的浏览量都算作展示),以及知名度的提高 改进了类别和关键字排名。 应用程序营销和ASO工具Tune估计,每次下载都会有1.5个新下载的乘数。 7. 趋势/季节性可能会引起印象高峰(例如假期,自发性,流行文化的转变等)。 8. 应用页面和/或元数据的 更改可以直接通过关键字等级影响您的印象,也可以通过安装转换率间接影响下载(关键字和类别排名的排名信号)间接影响您的印象。 9. 进入新应用程序后 ,您的应用程序可能会开始为其名称排名,这也会导致您的印象增加。 伙计们,到此为止! 请确保将我们的博客添加为书签,注册到我们的电子邮件新闻通讯以获取新的帖子更新,如果您有兴趣与我们合作,请与我们联系。 Incipia是一家移动应用程序开发和营销机构,专门为公司构建和营销应用程序,并擅长于高质量,稳定的应用程序开发以及基于关键字的营销策略,例如App Store Optimization和Apple Search Ads。 对于博客/视频或口语请求,业务或新闻查询,请 与我们联系 或将查询发送至 hello@incipia.co 。

学习Swift和iOS开发第10部分:类

如果您刚刚开始学习编码之旅,那么您可能听说过面向对象编程。 它是一种广受认可的编程模型,它经受了时间的考验。 它开始达到可以被其他更现代的模型(如Protocol-Oriented Programming所取代的地步,但是理解它仍然非常重要。 类是OOP(面向对象编程)的关键组成部分,它使我们能够创建排序的蓝图,然后根据需要对其进行复制和修改。 一个例子可以是汽车工厂中的汽车。 想象一下,工程师为汽车创建了一个蓝图。 在工厂中,您可以按照蓝图中列出的计划,使用该蓝图创建同一辆汽车的多个副本。 让我们创建我们的头等舱,并使用上面的car示例。 配置 首先,如果尚未打开Xcode,请点击Create New Playground 。 给它起一个类似“班级”的名称,然后单击“ Next 。 选择某个位置以保存此.playground文件,然后单击“ Create以保存它。 您应该会看到类似下面的屏幕。 删除左侧的所有样板代码,但根据需要保留import UIKit 。 创建您的第一堂课 在您的Playground窗口中,输入以下内容来创建一个类: 车辆类别{ } 我们使用了关键字class后面加上了Vehicle类的名称。 最好的做法是,以大写字母(即“车辆”,“摩托车”,“踏板车”)开头课程名称。 添加变量和函数 现在,我们需要为我们希望所有汽车拥有的属性添加变量。 像这样: 车辆类别{ var轮胎= 4 var大灯= 2 var马力= 468 var model =“” func drive(){ //加速车辆 } func刹车(){ //停止车辆 } } 如您所见,类可以具有描述它的属性(例如, tires , headlights , […]

使用播放/暂停应用程序跳舞,让您的生活更轻松…

DispatchSource使调试变得容易,在运行时分析视图更改,对象状态更改。 在这里,我将描述一种随时随地(运行时)更改对象状态的方法。 我们可以使用断点从调试器更改对象状态。 但是,断点仅在应用于要执行的代码时才能停止执行。 但是,如果我们必须随时随地进行此操作,那么我们就不能依赖于自定义代码的断点。 解决此问题的方法之一就是使用DispatchSourceSignal 我们大多数人都知道DispatchQueue,Qos类,使用DispatchGroup等。 但是我们并不十分了解DispatchSource提供的api和功能。 从Apple Doc: DispatchSource提供了一个接口,用于监视低级系统对象(例如Mach端口,Unix描述符,Unix信号和VFS节点)的活动,并在发生此类活动时提交事件处理程序以分派队列以进行异步处理。 因此,让我们看一下这种信号监视如何使我们能够随时随地更改对象状态,这在调试过程中会非常方便。 该信号应在应用程序的调试模式下使用,以阻止您的应用程序在生产环境中的洞察力,并保护您的应用程序免受攻击者的侵害。 该代码将很快,所以我假设所有人都知道迅速的基本语法,尽管ObjectiveC中也提供了相同的api,所以让我知道是否需要知道。 让我们添加一个全局属性声明以在传递的对象上启动信令。 对于我的用例。 我在类声明上方添加此属性。 通过viewDidLoad设置信号,如下所示: _ = setupSignalHandlerFor(自己) 方法说明逐步 如前所述,我们将仅在调试模式下进行此设置。 我们声明一个可选的源信号参数。 启动信号以监视主队列上的SIGSTOP Unix信号。 当收到信号时会添加事件处理程序。 源以挂起状态开始,因此可以通过调用resume来启动 现在,我们为Unix Signal设置了信令,可以用来更改对象状态,正确.. 您是否在问同样的问题,如何用于更新对象状态? 让我们解开谜团 现在,以调试模式运行您的应用,并设置信号发送。 使用此处提供的控件暂停应用,然后再次播放。 再次播放它将击中您的信号,并且您的日志语句将被打印。 现在,如果将断点放在打印语句上,则可以通过暂停和播放来拦截应用程序中任何位置的执行。 现在看看我如何用它来更改对象状态。 在调试器中编写: 宝物 将打印“ ”” 因此,这意味着对象是我们的控制器实例,并且其属性可以更改。 例如,切换按钮的隐藏状态。 expr object.searchButton.isHidden = false Xcode调试器有时可能无法直接对对象实例进行更改。 在这种情况下,我们必须声明一个指向对象的调试变量,如下所示: expr let $ vc = unsafeBitCast(0x7fb43d40fbf0,to:YourModule.ControllerName.self) […]

固体-iOSразработке。 Принципединственнойответственности

Введение ВэтомциклестателбырассказатьоSOLIDпринципах,и,чтосамоеглавное,дополнитихпра Понимаясмыслиспользованиякаждогопринципа,从 Немногоистории Вначале2000-хРобертМартин,такжеизвестныйкакдядюшкаБоб,придумалсписокиз11принриоооое Первые5принциповописывали,каксделатьхорошийдизайнкласса。 使用SOLID ,则必须使用ПозжеонисталиизвестныподговорящейаббревиатуройМайкломФизерсом。 Этипринципыпомогаютписатьнадежный,гибкийкод。 Надежностьозначаетпростотуипонятностькода ,чтопозволяетлегковноситьвнегоизменения,упро Гибкостьпозволяетсминимальнымиусилиямимасштабироватьпроект ,则需将кодовуюбазубезвредвредвред。 固体 Чтожеобозначаетаббревиатура? S — 单一责任原则(SRP ) (SRP )或Принципединственнойответственности O — OCP ( 开放式封闭原则 ) L —ПринципподстановкиБ。 Лисков(里斯科夫替代原理LSP ) I — ISP ( 接口隔离原则,Interface Separation Principle,ISP ) D — 依赖倒置原理,DIP )( D) (Принципинверсиизависимостей) Опытномуразработчикумогутбытьочевиднывсепринципыдажепослебыстроговзгляданаихрасшифров。 Нооченьчастомногиеначинающиеразработчикинедоконцапонимают,почемуэтипринципытакважны。 Дляустраненияэтогопробелавзнанияхдавайтепройдемсяпокаждомуизних。 Принципединственнойответственности РобертМартинописывалеготак: Каждыйклассдолжениметьтолькооднупричинудляизменения Другимисловами,объектдолженнеститолькооднуответственность。 Егоинтерфейсиимплементациядолжныбытьнаправленытольконаэтуответственность。 Принципдолженсоблюдатьсявсигда:нетолькоприпроектированиикласса,ноиприегобагфиксе。 Оченьчастокласссоздается,следуяпринципу,нопотомвнегопопадаетвсё,чтотольковозможно。 […]

进入秋千

这是漫长而忙碌的一周。 兼顾期中,俱乐部和工作并不是一件轻松有趣的事,但必须做到。 这个学期还没有真正开始,直到您在团队的GroupMe中拉头发或疯狂发短信了吧? 我们可能对这些事情感到内gui,但是该应用程序很好地结合在一起。 本周,我们创建了一个Twitter帐户,开始编码并讨论徽标设计。 我们对第一个视频有一些聪明的主意,因此请继续关注,以了解哪些技巧是我们的主力军。 虽然我们花了一些时间来调整目标,但Quatro团队终于开始步入正轨。 上周的笔记帮助我们将线框与我们想到的所有功能结合在一起。 谁知道将线框组装在一起需要花费多长时间? 我们确实必须让自己成为潜在用户的选择。 从确保没有不必要的选项卡或页面可以集成到其他地方,到设计美观的应用程序图标,我们需要考虑很多事情。 我们希望该应用程序图标看起来美观,但也要提醒用户为什么拥有它。 例如,大多数人喜欢草莓,而草莓是一种水果,因此人们会自动将其与食物关联。 我们的应用程序百思买(Best Buy)将具有颜色系统,以识别即将到期的商品,因此我们要确保应用程序本身的颜色与商品的颜色不冲突。 我们认为,更多柔和的颜色效果最好,因为它在眼睛上很容易,不会与其他颜色发生冲突。 到目前为止,我们可能最开心的事情就是集思广益,介绍了Best By。 我们不想让所有人都喜欢它,因此在视频准备播放之前,我们不会分享太多想法。 如果您还无法猜测,那么它们很可能是人们在吃东西的视频。 谁不喜欢吃东西? 我们希望对视频采取幽默的态度,因为我们希望人们听到关于Best By的微笑。 幸运的是,我们可以使用各种设备使我们的视频真正独一无二。 就编码而言,我们的计算机向导正忙于创建具有用户身份验证的登录页面,并正在处理所有食品和购物清单的表格。 他们正在编辑食物过期数据,因为人们从杂货店购买了很多食物,所以有很多这样的数据。 首先,我们将添加一小部分食物以测试该应用程序。 这将是一段漫长的历程,但我们会继续努力,稳步取得进展。

Travis Stages的iOS部署管道

持续集成的过程执行各种活动,例如分析,构建,测试和部署iOS应用。 将每个构建任务分解成各个阶段并独立执行它们是一个好主意。 此过程也称为构建管道或部署管道。 作为iOS开发人员,您可能已经体验到构建iOS应用可能需要很多时间才能进行测试。 管道是处理iOS开发的各个阶段以获得快速反馈的方式。 在花费了数小时的构建和测试阶段之后,我们可能不想因代码样式问题而导致构建失败。 自托管的持续集成服务器(如Jenkins和TeamCity)具有创建构建管道的良好支持,但是基于云的CI服务器(如TravisCI,CircleCI等)也正在推出部署流水线功能。 在这篇文章中,我们将看到如何使用Travis Stages功能设置iOS部署管道。 请注意,我以TravisCI为例,因为我将其用于一些开源项目。 其他可能基于CI的CI服务器也可能具有类似的功能。 iOS部署阶段 在进入TravisCI设置之前,我们将了解部署任何iOS应用的重要阶段是什么。 主要的构建阶段是 分析源代码中的代码样式问题 使用XCTest或其他框架进行测试 构建和存档iOS应用 将iOS应用分发到其他Beta测试服务 将iOS应用上传到iTunes Connect 这些是必须在连续集成服务器上自动化的主要阶段,才能实现自动部署。 特拉维斯舞台 万一TravisCI刚开始使用,它是一个嵌入Github的基于云的持续集成平台,该平台允许为开源以及企业项目运行CI构建。 它具有良好的文档,可帮助您开始进行持续集成。 TravisCI宣布了Travis Stages的新功能,以实现针对开源项目和企业项目的部署管道。 可以通过在.travis.yml文件中添加以下代码示例来启用这些阶段 工作: 包括: -阶段:测试 脚本:./ test 1 -#阶段名称不是必需的,将继续使用`test` 脚本:./ test 2 -阶段:部署 脚本:./ deploy 为了在iOS项目中应用此原理,让我们在GitHub上创建一个开源项目,如下所示(您可以使用任何iOS应用) 在Xcode中创建名为SwiftLint-CI的空白单视图应用, 其中包含单元和UI测试目标 使用CocoaPods添加SwiftLint来检查Swift代码语法。 这可以通过创建Podfile并运行pod install命令来完成。 现在,我们已经为CI配置了一个基本的iOS项目。 现在,我们可以添加支持以在TravisCI上运行构建并启用以下阶段。 使用SwiftLint为Lint Swift代码构建阶段 构建阶段以运行单元测试 构建阶段以运行UI测试 使用阶段创建.travis.yml TravisCI使用macOS虚拟映像来运行构建,所有映像的列表都可以在此处找到。 我们可以选择最新的xcode9图像来运行演示应用程序的构建。 […]

如何在移动开发项目上省钱

这是我时不时遇到的一个问题。 许多人都对应用程序有想法,或者许多公司希望为客户提供使用其服务的替代方式,想要分享比通过移动版本浏览其网站所获得的更好的体验。 的确,本机iOS和Android应用程序可以更好地与设备耦合,并且可以更好地访问设备的硬件功能(例如位置服务,USB受管设备等),这可能是出于这个原因或许多其他原因,您可能希望拥有自己的移动应用程序。 首先,您当然应该在您所在地区的不同应用程序开发人员上引用报价,但是如果您发现它太贵或刚好超出预算,可以采取几项措施降低成本并使该应用程序成为您自己的应用程序组织需求。 您可以随时雇用您所在国家/地区以外的公司或开发人员,并寻找更优惠的价格。 信任具有不同文化背景的人并不容易,如果他们的职业道德与您的组织标准不符怎么办? 您如何确保可以得到一些东西以换取您的钱? 查找拉丁美洲所需的开发人员 如果您选择在拉丁美洲雇用人员,则可以获得更好的价格。 惠普企业服务部副总裁兼总经理Eduardo Araujo指出:“ 拉丁美洲的外包市场非常繁荣,部分原因是它与美洲其他地区处于同一时区,因此这是自然的联系。” 您可以立即聘请程序员。 可扩展路径或Toptal之类的网站可以帮助您找到项目的开发人员,每小时的前期成本很高。 这可能是您一直在等待的节省,但是也许您确实不愿意直接雇用其中一位。 费率 要了解费率,如果在拉丁美洲聘用某人,您将少付四倍的薪水,但选择团队时应格外小心。 美国拉丁美洲初级开发商$ 95-$ 101(每小时)$ 25-$ 35中级开发商$ 120-$ 127 $ 35-$ 45高级开发商$ 140-$ 148 $ 35-$ 50主开发商/专业承包商$ 150-$ 300 $ 50-$ 100 选择一支很棒的离岸团队 在美洲各地建立团队可能是节省金钱并获得高质量服务的绝佳方法,其优点是在许多拉丁美洲国家/地区中,时区与美国时区重叠,因此您获得时间的时间 整个团队的同步工作水平更高。 如果在美国,开发人员的基本薪水是每年+100,000左右(约合每小时50美元),那么您会发现许多高质量的开发人员收取的费用仅为该费用的一半甚至更低。 有些公司实际上有在不同城市工作的人,甚至帮助管理团队。 因此,理想情况下,您可以与美国某人见面,讨论该项目的细节,他或她可以帮助您传达信息并检查事情是否正确。 许多公司也可以帮助您招聘人员,但您始终拥有最终决定权。 雇用开发人员或设计师时,最重要的问题应该是: 他过去是否这样做过? 当然,它不一定是完全相同的产品,但是您确实需要人来帮助您交付产品,并且最好的方法是确保您知道他们确实做到了。 通讯 多年来,我一直从事许多项目,其中客户来自美国,而程序员,设计师等位于其他地方。我无法强调与项目中不同方面进行良好沟通的重要性。 我建议您牢记以下几点: 计划一个每天起床的时间,不仅对每个人都可用,而且他们还有一些时间开始工作(至少1或2个小时) 使用Slack,Skype或您喜欢的任何工具,都有特定的渠道供其他团队成员连接。 分享和安排议程,让团队中的每个人都可以通过电子邮件,聊天或方便使用的任何通讯工具来了解实现的里程碑。 (对于在海外工作的人来说,很容易感到动力不足而不是团队的一部分,因为他们只是听不到新闻)