Tag: ios

为什么企业更喜欢Swift中的App开发?

自Swift编程语言发布以来,Swift应用程序开发一直是许多顶级企业中的热门话题。 近年来,我们看到了某些渐进式创新的崛起,类似于IoT应用程序开发 , 云计算和大数据等在整个行业带来了非常快速的变化-Swift也是其中之一。 最近,Swift中的应用程序开发已成为时代话题,成为Lyft,LinkedIn,Getty Images和American Airlines等应用程序的不错的企业选择。 事实证明,Swift是一种更聪明的编程语言,可以在iOS应用程序开发人员和最终用户之间建立更直接和有意义的联系。 将来,Swift编程语言将变得更加流行,并且随着时间的流逝,它可能会在公司服务器上找到位置。 阅读有关为什么企业更喜欢Swift中的App开发的更多信息?

iOS订阅很难

使用正常的IAP流程进行购买 除了不同的用户界面副本外,购买订阅产品与购买非订阅应用内产品相同。 不同之处在于,订阅产品将续订,稍后会在StoreKit队列上生成未经请求的交易。 订阅应用内交易在收据数据中也有一个expiration_date字段。 您将使用此字段来确定用户有权获得哪些产品或服务。 设备上收据验证 为了保护自己免受IAP盗版并提取用户的交易历史记录,您需要验证您的App Store收据。 如果没有服务器,则可以在设备上执行此操作。 我不会在这里介绍整个过程,但是我过去已经写过。 Apple不提供用于验证收据文件的内置方法。 他们认为,这些内置方法将仅成为IAP破解程序的目标。 相反,他们建议每个人都自己滚动,以确保标准的IAP破解程序不会破坏您的应用程序。 但是,用于验证设备上的收据文件的代码并不简单。 解析到期日期 解压缩收据文件后,您只对最新的expiration_date感兴趣。 通过遍历收据中的所有应用内购买记录并找到最新的expiration_date字段,然后将其缓存(通常在NSUserDefaults或类似方式中),可以提取此内容。 处理续订交易 处理续订是常见的错误区域。 在标准IAP流程中,您只需要担心用户完成购买时StoreKit付款队列的状态。 有了订阅,您的应用程序需要随时准备处理这些交易。 现在,您需要从应用程序中的任何位置处理购买; 需要在每个屏幕上考虑用户订阅状态更改的影响。 处理该问题的适当方法是:一旦它出现在StoreKit队列中,请验证收据并更新用户的权利。 但是,这可能很困难。 例如,如果您的应用程序有一个帐户系统,那么您如何处理没有用户登录时发生的交易? 或者考虑发生在某个流的中间的事务,该事务取决于用户的订阅状态。 设计应用程序时,您必须计划所有这些可能性。 设备端订阅中的差距 设备端收据处理使一些重要的事情变得困难或不可能。 首先,您的订阅状态被困在设备上。 如果您想将服务扩展到当前应用程序之外,则需要针对用户的当前订阅状态设计一些精心设计的转义计划。 将订阅处理限制在设备上也会使您难以理解您的业务绩效。 iTunes Connect已经变得更好,但是如果您想逐个用户了解任何内容,则仍然缺少iTunes Connect。 苹果公司的所有仪表板都完全匿名。 如果只需要鸟瞰,汇总指标就可以了,但是使用Apple的仪表板,即使是简单的数据问题,您也将很快无法回答。 我认为避免仅设备订阅的实现的最大原因只是受StoreKit队列的支配。 如果由于某种原因您的代码或StoreKit出现故障,您可能会错过一笔交易。 这可能会剥夺付费客户或其服务。 如果仅使用设备端订阅,则可能很难调试或补救这种情况。 使用服务器确实很有意义。 服务器订阅 使用服务器意味着:您无需在设备上解析收据,而是将该收据发送到服务器以进行验证和解析。 在设备上,实现与设备端订阅的实现类似,但有一些关键更改: 正常的IAP流量 收据被发送到服务器进行验证,解析,存储并返回数据 服务器响应存储在设备上 续签交易的处理(半可选) 将收据发送到服务器 步骤2表示与设备端订阅最根本的不同。 您可以通过HTTP将收据发送到服务器,而不是在应用程序中实现收据解析和验证。 这样做有两个明显的优点: 您可以使用Apple的/verifyReceipt端点 […]

inCaller iOS App评论– MacSources –中

inCaller iOS App评论 该应用程序将使您喜欢电话 普通手机语音通话有时只是浪费时间。 来电通常在最不适当的时间发生。 这就是为什么inCaller提供解决方案-丰富的呼叫。 在通话中添加文字,通话类型和标签,以提高通话效率,并使其礼貌和方便。 这就像在呼叫中添加主题行。 使用inCaller应用程序,您可以知道谁在打电话,为什么打电话(在接听电话之前)以及是否接听电话。 您的通话现在看起来很棒! 只需选择一个联系人,添加标签和文本即可。 在这种可爱的背后,有很大的潜力可以节省您的时间和精力。 试想一下,在您的周末接到商务电话-您愿意聊天吗? 或记住这个尴尬的时刻,当您呼叫一个陌生人,并且当他/她最终回答您时,您会开始进行不连贯的介绍。 几乎每个人都对错过的电话感到遗憾……一个重要的电话,他们没有回答以为那只是另一次闲聊。 使用inCaller可以避免所有这些情况-伴随呼叫的简短消息可能会有很大的不同。 除文本外,您还可以定义呼叫类型:紧急,商务,机密或个人。 并从定期更新的图库中选择一个贴纸,例如: 该应用程序可用于呼叫您的任何联系人,但只有安装了inCaller的联系人才能使用元数据丰富呼叫。 要邀请朋友,您只需点击“邀请”图标或从“更多”页面共享应用即可。 还有一个适用于Android的版本,因此您不必理会呼叫接收者的设备。 应用程序开发人员欢迎用户的反馈,功能或内容请求,任何人都可以成为Beta测试人员以获取即将发布的应用程序版本(只需通过网站上的联系表进行申请即可)。 没有太多的应用程序可以改变您的日常习惯。 inCaller渴望成为其中一员,因为它已准备好完全取代您的本机拨号程序。 下载 — inCaller —免费— iOS 有关更多信息,请访问incaller.org 在Facebook和Twitter上查找inCaller。

科威特的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.医疗服务

XCFit:具有Swift 3.1和Xcode 8.3支持的iOS完整堆栈BDD框架

XCFit是Xcode中的全栈iOS BDD框架。 XCFit设置带有框架代码和目录结构的Xcode模板,这有助于我们开始使用BDD,而XCFit Swift Framework提供了许多预定义的BDD样式步骤,从而可以用更少的代码来实现自动化BDD。 您可以在Github上阅读XCFit的详细信息。 XCFit 4.0已发布,具有很多功能,简短的发行说明可在GitHub上获得。 让我们详细了解XCFit 4的新功能。 XCFit 4.0 XCFit 4.0是主要版本,对Swift框架进行了许多改进。 XCFit 4 .0具有以下主要更改。 支持Swift 3.1和Xcode 8.3 添加了对带有集成Cucumberish库的XCFit框架的迦太基支持。 为XCFit和Cucumberish添加了许多预定义步骤,以便我们可以将其直接用于我们的项目中。 通过将XCFit和Fitnesse模板分别放在不同的命令中来改进Xcode模板。 在Youtube上使用Video Demo改进了XCFit的README和Web页面文档。 让我们简要地看到新的变化。 Swift 3.1支持 苹果刚刚发布了Swift-3.1-dev快照,其中对XCTest框架进行了一些有用的更改。 您可以在DZone博客上的XCUITests中阅读有关新添加的类的信息。 基本上,XCUITest现在支持异步测试,并能够使用新类控制Siri。 苹果已经添加了XCWaiter类,以使XCFit能够更好地等待服务员。 XCFit 4.0是完全基于Swift 3.1构建的,您可以在Cocoapods上看到Swift版本。 这个想法是从XCFt 3.1开始完全支持XCFit Swift框架。 如果尚未安装Swift 3.1,则可能需要等到Swift 3.1公开发行版才能使用XCFit 4.0的新功能。 迦太基支持 XCFit Swift框架现在可以使用Carthage构建,以前它仅与Cocoapods一起使用,但是XCFit 4.0也为Carthage添加了支持。 XCFit依赖于Cucumberish框架,因此我们可以通过拉XCFit来获得这两个框架。 只需在项目根目录中的Cartfile中添加以下内容 Github“ Shashikant86 / XCFit” 现在,我们可以使用以下命令下载并构建框架 $ carthage更新—平台iOS […]

零件中的核心数据优化— 1

大多数时候,我们的应用程序都具有数据存储功能,例如缓存,提供脱机支持或提高应用程序性能等目的。 在本系列文章中,我们将探索一些设计技巧,并为提高iOS应用程序上的Core Data性能奠定基础。 这会导致iPad App的fps下降。 它不仅降低了fps速度,而且使我们的应用程序反复缓慢。 滚动tableview / collection视图确实很痛苦,因为App暂时停止了。 如果不运行Core Data工具,我将不会发现此问题。 规则1:测量,测量和测量 如果进行测量,您会发现板子前面有问题。 那么为什么不先这样做呢? 进行一些操作通常会导致我获取大量数据,因为我对记录中的每个项目都进行了重复的访存调用。 由于每个记录都可以使用其ID进行标识 您可以告诉CD根据ID一次获取所有记录。 编号:[Int] 让fetchRequest = NSFetchRequest (entityName:“ MyEntity”) fetchRequest.predicate = NSPredicate(格式:“ id IN%@”,id) 虽然它减少了我的提取次数,但仍然没有帮助我减少保存 算是因为我在做这样的傻事: 下载的记录中的ID { //在此更改托管对象的上下文并将其保存在context.perform { 做{ 尝试context.save() }将let错误捕获为NSError { fatalError(“错误:\(error.localizedDescription)”) } } } 由于Core Data将获取的对象保留在上下文中(在内存中),因此您可以修改存在于上下文中的获取的对象。 除非您清除上下文,否则上下文会保留MO的更改。 所以现在我们的代码看起来像: 下载的记录中的ID { //在此处更改托管对象的上下文。 updateEntity() //变更将在上下文中存在 } //现在保存上下文。 这会将更改从上下文推送到存储。 context.perform […]

iOS开发制作框架简介

框架对于iOS开发非常重要。 通过使用框架,一个关键问题很容易解决。 所有这些框架都是由Apple构建的。 这些框架可供开发人员使用,因此,我们可以利用使iOS应用程序成功的技术。 构架 框架是一组独立且可重用的代码,它们被用作软件的构建块。 框架最好的理由是它们只能被构建一次,并且可以无限次地被重用。 有不同类型的框架。 例如UIKit,Repro,Fabric等。 框架步骤 从Xcode创建新项目,转到File> New> Project 2.选择ios,然后选择Cocoa Touch Framework>下一步 3.提供框架名称和其他信息,然后单击下一步按钮 4.最后保存,您要保存的位置 与主项目连接 创建您自己的项目。 要从框架获取帮助,需要将框架与项目连接。 然后,为了从项目中使用此框架,您需要导入项目代码。 框架结构 例如,名为TestFram的框架。 因此,在此TestFram Framework中,添加名为RandomColor的类。 在RandomColor.h文件中添加公共方法 (UIColor *)useRandomColor; 在randomColor.h文件中需要useRandomColor方法来实现。 这里使用红色,绿色,蓝色中的随机数来改变颜色。 (UIColor *)useRandomColor { 返回[UIColor colorWithRed:redColor green:greenColor blue:blueColor alpha:1]; } 这里redColor是红色的float随机数。 这里greenColor是绿色的float随机数。 这里blueColor是蓝色的float随机数。 主要项目结构 在主项目中,我们需要连接Framework。 像这样导入 #import 例如,在主项目中,添加了使用此框架的按钮。 还添加了UIView,用于更改其背景色的颜色。 像这样的按钮动作代码, (无效)changeColor { self.changeColorView.backgroundColor = [RandomColor […]

使用Travis CI连续部署iOS

在Telestax,我们相信持续集成与部署是我们生产的所有软件的组成部分。 随着我们的移动开源WebRTC SDK变得更加成熟,我们开始意识到,越来越多的时间花在了测试和部署的手动步骤上,而不是实际的开发上,现在是时候该死了,并引入CI / CD设施。 在本期中,我们将介绍如何使用Travis CI解决Restcomm Olympus应用程序的持续部署问题,该应用程序是我们在GitHub上托管的开源WebRTC Restcomm iOS SDK的一部分。 更具体地说,我们将: 构建并导出已签名的restcomm-olympus.ipa,并准备进行企业部署。 将restcomm-olympus.ipa上传到TestFairy Beta测试平台,以便我们的Beta测试人员和社区可以立即使用。 这说起来容易做起来难,所以让我们深入了解一下细节。 iOS签名简介 为了能够部署到任何物理设备,而不必每次我们要在新设备上进行测试时都必须更新配置文件,我们将使用企业分发。 这样就可以在Apple App Store外部自由分发App。 要构建以这种方式可分发的.ipa,构建过程分为两个步骤: 生成存档的存档构建步骤。 为此,您需要在CI服务器中安装“开发身份和开发配置文件” 导出步骤,用于对存档进行签名并生成可用于实际分发的.ipa。 为此,您需要在CI服务器中安装分发标识和分发配置文件 但首先.. 关于自动签名 从Xcode 8开始,随着自动签名的引入,很多地方在Signing区域中进行了更改,从而解决了过去的许多问题-请记住,如果以前使用的生成脚本可能会向后兼容,可以与Xcode 7一起使用。有关更多信息,我敦促查看有关该主题的Apple最新的WWDC会议。 另外,对于更技术性的方法,这是一个很好的阅读材料,它首先概述了Apple的代码签名机制,然后描述了Xcode 8中的更改。 我们将使用自动签名,我敦促您也这样做,因此,如果您还没有这样做,现在是升级到Xcode 8的好时机。对于新的Xcode 8项目,默认为自动签名,并且要求您执行以下操作。在创建项目时选择您的团队ID ,并自动为您设置签名身份和配置文件。 您可以在会员中心的“ Apple帐户会员”页面中找到您的团队ID: 如果您已经使用早期版本的Xcode创建了应用程序,则应导航至主要目标的“常规设置”,然后勾选“ 自动管理签名”: 再次,您将被要求输入团队ID,所有内容应自动为您处理。 在这一点上,需要指出的是, Apple并不真正支持在您无法访问UI和Xcode IDE的无头机器上进行构建 ,例如Travis CI的情况(不幸的是,这是我们从Apple那里得到的回应当我们针对某些问题提出技术支持事件时,我们就遇到了麻烦。 主要问题如下: 无法提供自动解决方案来解决有关身份和配置文件的问题(即只能从Xcode IDE中获得解决方案)。 您无法解决UI中显示的任何安全提示,例如在codesign步骤中授予访问权限。 但是不要害怕! 如果您确保在构建之前已安装了正确的身份和配置文件,并且已在脚本中采取了一些其他步骤来授权codesign在没有这些UI提示的情况下工作,那么一切都会正常进行。 我们将稍等一下。 请记住,这里的总体思路是,您首先必须在本地OS […]

当您需要挽救旧照片并进行数字化处理时,“不褪色”应用程序会很方便。

迈尔斯·艾伦·普鲁特(Miles Allen Pruitt) 当您需要抢救旧照片并使用“ Unfade”应用程序时,它非常方便。 如果您想在鞋盒中保存丢失了很久的模拟照片,或者只是想释放那杂乱的阁楼中的空间,则应进入应用商店,然后将Unfade应用纳入您的应用收藏中! Christoph Wagner从头开始构建了他的应用程序Unfade。 德国公司Unfade于2016年5月24日成立,专门研究数字化旧照片并改善整体视觉质量。 该初创公司的想法源自Wagner在计算机视觉方面的深厚专业知识。 这使Wagner可以创建第一个计算机视觉空间应用程序Scanbot,该应用程序目前在全球范围内有超过400万次下载。 随着Wagner过渡到创建自己的应用程序,他遇到了许多独特的挑战。 最大的障碍之一是App Store并非为“早期且经常修复”开发而设计,这是指App Store无法立即正确显示修复程序。 平均而言,修复需要一天的时间才能生效。 但是,尽管存在这些早期问题,但该应用程序易于使用,并且与其他应用程序相比价格合理。 有趣的是,目前已获资助的该应用程序将Swift中的书面代码集成在一起,除了边缘检测中的代码(边缘检测中的代码已集成在Objective C中以与OpenCV一起使用)。 虽然非常成功,但Unfade面临着Photomyne的竞争,Photomyne是另一个可提高旧模拟照片质量的应用程序。 随着用户继续更新其移动设备和计算机,应用程序对能够在2000或更旧版本的旧设备上更新旧模拟照片的需求将继续增长。 随着Unfade的发展,将会有更多的用户,更多的创业公司将开始萌芽。 这一切都来自克里斯托夫·瓦格纳(Christoph Wagner)的愿景,他实现了梦想并将其变为现实。 Unfade的持续愿景和增长是基于用户反馈并添加其他功能的快速迭代。 此外,即使用户不愿付费,也可能会有付费应用的未来计划,但是Unfade应用的好处将促使消费者将钱投资到该应用中。 不褪色是未来工作的出发点,您应该一臂之力。 您可以在这里查看Wagner的愿景: www.unfade.io 或 在此处下载应用程序: https : //itunes.apple.com/app/id1096568238 分类:家庭应用

被苹果公司推荐的价值可能比您想象的要大得多

午后喝着咖啡,我低头看着手机与我的团队在Slack上办理登机手续,并收到了比我数不胜数的更多通知。 世上发生的一切,我坐在客厅里大声说着,我确信自己的表情看起来像是茫然的凝视。 收集想法后,我在手机上打开了App Store,以查看bnotes是否出现在某处。 这是我唯一想到的发送大量下载信息的地方。我以前来过这里…… 不是在同一个座位上,而是在这个位置上使用了Apple精选的应用。 令我惊讶的是,在浏览类别页面,主页甚至进行Google搜索后,我什么都没发现,但没有发现任何功能。 可以想象,我有点困惑。 我无法回答这个问题,这是怎么回事? 我放下电话,深吸一口气,静静地坐在那儿几分钟,沉浸其中。 然后,ping通过 “嗨,尼克, 祝贺您在“我们喜欢的新应用程序”中获得推荐。我正在努力介绍自己,将其作为Apple的资源…” 啊,我们有特色。 我请苹果代表米奇(Mitch)发送屏幕截图。 当时我得出的结论是,我看不到该功能,因为该应用程序已经在我的设备上了,这很有意义。 数字显示“我们喜欢的新应用” App Store流量| 340万次展示(显示在用户供稿中) App Store流量| 4.62K下载(用户下载的应用) 9/4 | 503 | 516K次展示| .09%转换率 9/5 | 1,410 | 140万印象| .1%转换率 9/6 | 1,020 | 985K次展示| .1%转换率 9/7 | 601 | 197K次展示| .3%的转换率 9/8 | 368 | 207K印象| 0.17%的转换率 9/9 | […]