Tag: 移动应用开发

科威特的iOS应用开发

iOS应用开发: 与Android的发展状况相比,iPhone和iOS应用程序的开发状况受到很大限制; 但是,结合了正确功能的正确设备足以确保应用程序的成功。 有一支训练有素且经验丰富的iPhone应用程序设计师团队可以满足客户所说的必要性和细节。 作为科威特的iOS应用开发公司,我们在深入研究任务推进流程之前,对客户的业务形式及其预期的利益群体进行了内部和外部检查。 我们位于科威特的iOS应用开发人员的工程师不断升级自己的编程排放,设备和编程改进包,以根据最新的高级规范概述和创建便捷的应用程序。 这些应用程序包括一个智能且易于探索的界面,从而可以鼓励客户建立客户参与度,并提高收益。 尽管进行了应用程序开发,但我们还提供鼓励,支持和定制组装模块集成的管理。 1.最新的iOS SDK: 我们抓住了不断创新的最新升级的机会。您的应用程序经过组装,没有缺陷且功能强大,是基于我们采用了最完善的改进标准。 2.量身定制的界面: 从最近加入的3D触摸到不断变化的屏幕确定,我们对每一个经过重新设计的突出显示进行拍摄,以提高您的应用程序在iOS中的执行力。 3.旨在成为手工艺品的IOS应用程序: 我们着眼于兴趣点,我们深知iPhone的内在感觉。 相信我们的配置小组为iPhone爱好者概述最吸引人和最有用的应用程序。 4.一致的本地或交易: 我们认为本地应用很重要。 反应时间快,与本地元素兼容,执行力强。 新的开始我们的iOS实验室 : 我们BrillMindz的iOS专家可以使您修改和协调您的应用程序,使您满意。我们的团队参与了科威特的iOS应用程序开发,代表了iOS的巨大权威。 这保证了所有有用性,并且每个界面都来自准备好的iOS工程师。 Watch iOS即将进入我们的iOS实验室,iOS小组致力于通过可穿戴应用程序再现同样的魅力。 我们已经为应用程序类有效地概述了iOS应用程序。 1.媒体与娱乐 2.实用程序 3.物联网 4.医疗服务

为什么我喜欢编码

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与我联系。

iOS Mobile与React Native,Yarn,GreenhouseCI,CodePush和HockeyApp的持续集成

自从问世以来不到两年,但是React Native已经扰乱了移动开发。 React Native采用了卓越的开发经验,轻松的启动时间,“一次学习,随处编写”的精神以及热情的社区,因此赢得了本机和Web开发人员的一致好评。 随着React Native社区的不断发展和成熟,软件工程最佳实践开始显现。 任何平台开发的一项重要最佳实践是持续集成的概念。 一段时间以来,出于自动化的原因,自动化的构建和部署一直是Web开发社区的主要内容:效率低下,手动且易于出错的构建和部署在现代开发中不应该成为现实。 相同的信念已经进入移动开发,现在有大量支持自动化构建和部署的工具。 在本文中,我们将利用一套流行的工具(GreenhouseCI,CodePush和HockeyApp)以及React Native应用程序来实现强大的移动CI系统。 重要说明: GreenhouseCI不“正式”支持React Native,但其构建系统具有促进React Native应用程序CI的所有先决条件。 这就是下面的说明如此涉及的部分原因。 可以在此链接上找到此博客文章的示例应用程序。 假设条件 本博客文章假定以下内容: 您具有React Native开发的工作知识,包括NPM的工作知识 您已经为iOS应用设置了证书和配置文件 您正在使用Yarn管理您的React Native依赖项 关于版本的注意事项 此博客文章的编写具有以下版本: 节点:6.9.0(LTS) React Native:0.36 纱:0.15.1 贸易工具 在开始之前,需要注意这些工具的含义以及它们对于有效的移动CI系统的重要性。 GreenhouseCI : “ CI即服务”平台,可轻松配置适用于本机和混合应用程序的移动CI Yarn :Facebook创建的程序包管理器,允许进行快速,确定性的依赖项管理 CodePush :由Microsoft构建的库和基础结构,可通过无线(OTA)更新基于JavaScript的混合平台 HockeyApp :Microsoft的一项服务,允许将应用程序Beta有效地分发给测试人员 和谐地使用所有这些工具,使移动开发人员可以将更多的精力放在他们产品的质量上,而手动准备好要测试和部署的应用程序效率低下。 我们的目标 到本文结尾,我们将完成以下工作: 为我们的iOS React Native应用程序设置CodePush项目 在我们的iOS React Native应用程序中集成了CodePush 为我们的iOS React Native应用设置一个HockeyApp 为我们的iOS […]

使用VIPER模式进行iOS开发的干净架构

当开始一个iOS项目时,开发人员除了要达到应用程序的目的之外,还将首先关注的障碍之一是,他们需要的Cocoapods将是如何组织代码,以及可能遵循的设计模式。 尽管大多数开发人员会坚持使用久经考验的真正的MVC(模型-视图-控制器)或MVVM(模型-视图-视图模型),但是有一种聪明的模式称为VIPER,许多人都不知道。 VIPER可能会改变您习惯用于iOS平台的开发方式,并且像大多数事物一样,它具有积极和消极的作用。 通常的嫌疑 首次开始iOS开发时,开发人员将听到很多有关MVC或Model-View-Controller的信息。 这种Apple认可的架构模式随处可见,包括Apple的UIKit,大多数教程示例应用程序以及当今App Store上的大多数应用程序。 顾名思义,MVC分为三个职责: 模型:应用程序的数据和操纵该数据的逻辑。 视图:用户操作的用户界面。 控制器:控制模型和视图之间的逻辑。 如果您正在开发第一个应用程序或在一个小型团队中工作,那么MVC可以很好地工作,但是随着应用程序的发展,开发人员开始开玩笑地将MVC称为“大型视图控制器”。随着时间的流逝,越来越多逻辑被推到控制器中,控制器变得becomes肿且不可测试。 这就是VIPER模式试图解决的问题。 什么是VIPER? VIPER模式是一种遵循单一职责原则的干净架构。 VIPER努力将应用程序的逻辑划分为不同的责任层。 与MVC相比,VIPER更进一步,它分为五个职责: 视图:显示来自演示者的信息,并将用户交互发送回演示者。 交互者:检索实体,并包含特定用例的业务逻辑。 它们与视图无关,可以由一个或多个演示者使用。 演示者:处理为显示准备的内容并拦截用户交互。 实体:简单的数据模型对象。 路由器:处理应显示哪些屏幕以及何时显示的导航逻辑。 实施VIPER时,每个功能或模块都将遵循上述结构。 由于该应用程序的逻辑将分为多个较小的组件,因此视图现在变得更明亮,逻辑也变得更具可测试性。 VIPER的流程 VIPER的基本流程非常简单。 路由器将用户带到新的视图,该视图通知演示者它需要数据,演示者向交互器询问数据,交互器检索实体(从网络请求或本地数据库),交互器将实体发送到演示者,演示者从实体创建视图模型,演示者将视图模型发送到视图,然后视图向用户显示必要的数据。 实施VIPER 为了演示以VIPER模式创建模块,让我们假设我们正在创建一个显示汽车表的应用程序。 每个单元格都会显示汽车的品牌和型号。 用户将能够点击一个单元格并查看汽车的详细信息,或者他们可以单击“创建新汽车”按钮将新汽车添加到列表中。 实施新模块时,我发现自下而上的工作会更容易,因此我们将从定义实体开始。 实体 由于该应用程序正在处理汽车,因此让我们创建一个简单的struct对象,该对象将包含一些基本信息: car对象。 car对象是我们的API服务将返回给我们的东西。 它包含基本信息,例如汽车的ID,品牌,型号和内饰。 但是,当我们要显示有关汽车的信息时,由于表格单元格仅需要显示汽车的制造商和型号,因此不需要包括所有信息。 因此,我们可以创建一个快速视图模型来仅代表汽车的制造商和模型。 快速视图模型将在Presenter中创建,并传递回View。 互动者 现在我们的实体已经建立,让我们为其创建业务逻辑或“用例”。 我们的表格视图将需要使用API​​服务中的汽车填充。 因此,我们将创建一个Interactor,用于处理从API检索汽车并将其发送到Presenter。 为此,我们声明了一个名为getCars的协议方法,该方法将使用我们的API服务获取汽车并将其返回。 由于我们的应用程序非常简单,因此我们不需要其他用例(尽管大多数实际应用程序都有多个用例)。 主持人 有了Interactor,我们现在有了一种方法来检索最终将要显示的汽车。 如前所述,演示者负责对用户的输入做出反应并为显示准备内容。 我们的应用程序描述中提到需要显示汽车(制造商和型号),显示汽车详细信息的能力以及创建新汽车并将其添加到表格中的能力。 接下来,我们将创建一个Presenter,使我们能够做到这一点。 为了展示汽车,我们添加了showCars方法,该方法使用我们先前创建的Interactor检索汽车,然后从这些对象创建简单的视图模型,这些对象将用于视图中特定类型的单元格。 接下来的两个方法showCarDetail和showCreateCarScreen将使用Router(将在下面创建)来将用户导航到正确的屏幕。 我们的视图将使用以下三种方法来启用功能。 […]

重新设计的结帐功能,转化率提高了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,它关心业务逻辑并用数据填充单元格; […]

提高成功机会—雇用移动应用开发人员

时间已经过去了,智能手机仅是炫耀的媒介。 这不是浪费,但现在是必须的。 电子商务世界知道25%的在线购物是通过移动设备进行的。 为了雇用移动应用程序开发人员,应该了解一些统计信息,移动结构以及其他有助于做出决定的因素。 想到了这种想法,即移动应用程序仅适用于银行,大型超市如沃尔玛,亚马逊等大型企业。您是否知道用户将90%的移动时间用于移动应用程序,而不是移动网站? 因此,想象一下用户购买商品的机会。 需要雇用移动应用开发人员 移动应用现在无处不在。 甚至鞋店或瑜伽特许经营商也有其个性化的移动应用程序。 这是一项重要的营销策略。 让我们看看一些移动应用程序的好处: 随时可见客户 直销B2C 奖励客户 品牌建设与可持续发展 用户友好的方法 成为比赛中的第一名 减少广告,增加与客户的联系 移动应用设计结构 MVC结构: MVC —模型视图和控制器。 该模型主要是为基本类关系建立一个应用程序。 例如,会话处理,数据处理等。 该视图适用于GUI。 GUI的所有简化和美化都在这里进行管理。 控制器基本上是事件处理。 它从模型中获取帮助,处理所需的业务逻辑并将其发送给视图。 数据库抽象 这主要与ORM(对象关系映射)有关。 ORM使开发人员腾出代码来进行数据处理的基本设置。 例如,在Java中就有JDBC。 由于ORM,开发人员不必担心JDBC语法。 ORM的工作方式类似于包装器类,并且易于使用。 安全 在开发级别,需要注意很多事情,例如输入验证,网络身份验证,访问验证,会话管理,加密,异常管理和cookie-HTTP标头操作。 雇用移动应用程序开发人员之前的清单 角色和责任 –必须拥有知名大学的相关学位。 –应从根本上了解应用程序的生命周期。 这包括分析,设计,代码,测试,发布和支持。 –必须能够设计人性化 –编码应足够干净以提供功能。 –应从可靠来源获得具体要求和解决方案。 –应该能够编写单元和UI测试用例。 –对应用程序进行调试和故障排除。 –该应用程序应符合法律和质量软件标准。 –应该了解新的移动技术和应用。 –已更新为最新的技术和业务逻辑详细信息。 –了解OOP概念。 – 团队合作 –确保与第三方扩展和API的成功集成。 –可以很好地演示一个应用程序。 摘要 […]

反应NativeでiPadの画面分割に対応させる方法

React Nativeでこれをやるには少々问题があって, Dimensionsがうまくウインドウのサイズを返してくれない。“ Split View”でも“ Slide Over”でも常に同じ値を返す: console.log(Dimensions.get(‘screen’)) // {fontScale: 1, width: 768, height: 1024, scale: 2} console.log(Dimensions.get(‘window’)) // {fontScale: 1, width: 768, height: 1024, scale: 2} それは,最も外侧にViewを一枚敷いて, flex: 1をスタイルに设定して, onLayoutにイベントハンドラを设定を,そのビューのサイズを取得することだ。そしてそのサイズuxReduxのストアなりReactのContextなりに保存しておく。 适应性布局提供商/消费者 分いわゆるProvider-Consumerパターンの形を取る。サイズデータはReactのContext APIは使わずReduxのストアに格纳する。 提供者 // @flow // adaptable-layout-provider.js import * as React from ‘react’ import { View, StyleSheet } from ‘react-native’ import { compose, […]

我最终以“开发者”的身份经历的旅程

就像我们12岁以下的每个孩子一样,我的志向是成为一名医生并挽救生命,或者成为像Strange博士一样,时光倒流般的超级英雄。 但事实是,这些雄心壮志中的90%都没有实现。 随着我们的成长,世界在变化,我们受到世界许多变量的影响,从经济到教育,甚至我们自己的家庭都会经历巨大的变化。 例如,我们可能以跟随父母的脚步为志向,但是一旦改变,它就消失了。 游戏游戏! 当我还在学业时(大约20岁),我是一个游戏迷。 我喜欢游戏,从非彩色的任天堂游戏男孩到索尼的游戏机,包括任天堂WII等最新的游戏机,都曾玩过。 我也玩过许多流行的MMORPG,例如《仙境传说》,《魔兽世界》,《枫之谷》,您可能会喜欢,我很可能也尝试过。 由于对游戏的热爱,我在上大学之前就开始渴望成为一名游戏开发人员。 梦想破灭了,但是…… 在上高中的时候,我会和很多朋友在LAN商店闲逛到玩CounterCountike(曾经很流行的FPS游戏)到深夜,花了数百零花钱。 因此,我在离校考试中表现不佳,也没有参加游戏开发课程。 但这已经激发了我对IT行业的极大兴趣。 简而言之,我最终学习了电子工程。 努力工作,聪明地工作并有信念 作为一名工程专业的学生,​​三年对我来说也不是一件容易的事,我面临着艰难的项目伙伴,复杂的人际关系以及充满挑战性的情绪,无法应对我的未来。 仅在去年,我才被邀请去当地的教堂,信仰注入了我,成为一个更加自信的人,并确保了我的未来。 出于这种信念,我从遇到的挫折中恢复过来,并取得了相对不错的成绩,进入当地一所著名的大学攻读计算机学位。 我作为开发人员的旅程开始了…… 老实说,当我从大学生时代开始时,我从没想过我会成为一名开发人员,但是在这个季节,智能手机和移动应用程序变得越来越普遍,它们正在改变我们的日常工作方式。 考虑到这一点,我决定在罗马的一家海外实习机构尝试进行移动开发,而在我不知情的情况下,这成为了我的新爱好。 激情开始,动力开始…… 我开始观看视频以学习iOS移动应用程序的设计模式,并在两周之内,iOS,Objective-C和Xcode成为了我的“ BFF”,也是我一生的一部分。 我开始构建一个非常不起眼的基于位置的汽车维修应用程序,用户可以将消息发送到总部,并获取该应用程序中确定的最近的可用维修站。 后来,我去构建了一个Facebook数据挖掘应用程序,然后我从大学毕业,进入初创公司以继续这些热情。 到今天为止,我已经开发了20多个应用程序,其中30–40%在应用程序商店中发布。 挑战性 作为开发人员的生活从来都不是一件容易的事,Apple会不断更新其API,淘汰性能不佳的方法,提出更好的方法,使开发人员尽快适应。 我从iOS 6开始构建,直到现在它的iOS 10都发生了巨大变化。 如果我要挖掘出在实习期间写回的代码,在我们进行代码重构之前,它可能不会编译。 许多开发人员会同意我的观点,开发移动应用程序时面临的最大挑战是UI(用户界面),市场上有许多不同的屏幕尺寸,我们必须确保我们的代码适应这些布局。 我要发展多久? 最近有人问我一个关于我在哪里工作的职业道路的问题,我的职业目标是什么? 老实说,我还没有谈论过它,但是我很想向后代讲授我们手中掌握的简单或复杂软件如何才能真正改变我们的生活方式。 因此,到目前为止,我将继续致力于解决问题,并使用我们可以开发的软件使世界变得更美好。 在你走之前… 如果您喜欢这篇文章,您会喜欢Lawrey Swifty Weekly。 这是我免费的每周摘要,其中总结了有关iOS的最佳信息,以及有关生活,生产力和自我完善的内容。 在这里订阅。 加入世界各地的读者,更加快捷!

应用内评论和回应-最后!

我们已经等了3年了:现在,您可以对AppStore的评论做出回应-这是关闭产品改进反馈循环的关键一步。 您可能还记得我们之前曾想出过各种技巧来找到留下负面评论来调查此问题的用户。 不再需要这些技巧了! 10.3的另一个新增功能是StoreKit控制器的更新,该更新使用户可以在不离开应用程序的情况下为您的应用程序评分-这将大大增加评论数量! 谢谢苹果!