如果您喜欢某事,请免费命名。 除非它是一个应用程序。

我不知道是否有政策更改,但是我上周成功更新的我的Fugu Maze Free应用由于违反了此规则而被拒绝(出于某种原因,该应用位于“ App Store审查指南”的“效果”部分下) : 应用名称必须限制为30个字符,并且不得包含非应用名称的价格,条款或说明。 因此,显然您的应用程序标题中不能包含“免费”字样。 顺便说一句,上面的那一行后面是: 应用字幕是为您的应用提供其他上下文的好方法 我不知道什么是应用字幕。 无论如何,我想不出Fugu Maze Free的不同名称,也不想将其重命名为Fugu Maze并删除原始的Fugu Maze(在我开始收费之前它是免费的,然后人们停止下载它,所以我制作了一个单独的免费版本,因为我不想让付钱的人感到头疼……),所以我退休了Fugu Maze Free。 我让你自由,Fugu Maze Free。 感谢所有下载。

Hotels.com和Apple Pay

Hotels.com处于旅游业技术发展的最前沿,并一直致力于为客户提供一流的酒店预订服务。 实际上,我们的使命是提供无与伦比的预订体验。 我们做到这一点的方法之一就是为客户提供多种付款方式,以便他们可以使用适合自己的付款方式为自己的完美酒店付款。 2014年底宣布Apple Pay时,我们很高兴地说。 我们看到了使用Apple Pay真正增强预订服务的机会,并且几乎立即着手计划将Apple Pay提供给客户的最佳方法。 总体而言,我们认为Apple Pay是Hotels.com向客户提供市场领先体验的另一种惊人方式,可帮助他们找到并预订理想的酒店。 在全球范围内,Hotels.com iOS应用程序支持超过15种不同的付款类型,包括Pay Pal,巴西的分期付款以及许多其他付款方式。 因此,为这些iOS用户提供启用Apple Pay的设备的选项是轻松选择其首选付款方式的自然选择。 我们约有一半的iOS客户在支持Apple Pay的设备上与Hotels.com进行交互,并且这一数字在美国和全球主要市场中都在迅速增长。 尽管这个数字确实因地区和国家而异,但它仍然为我们提供了证据,证明我们的客户正朝着一种无摩擦的方式付款来购买商品,并向我们保证,将Apple Pay添加到我们的一系列付款方式中将受到客户的欢迎。 支付安全性和客户安全性对于Hotels.com的成功至关重要,这意味着我们需要以精心计划和研究的方式集成Apple Pay。 就是说,一旦我们的开发团队开始进行集成工作,它就可以顺利进行,并且添加Apple Pay基础设施变得毫不费力。 Apple在其Apple Pay开发人员网站上提供了所有必要的文档和示例,但在出现任何问题或痛点时,Apple始终愿意直接与我们联系并与我们合作。 我们的iOS开发人员发现从计划到启动的整个过程都是无缝的,并为能参与这项对企业如此重要的项目而感到自豪,并且成为他们所知道的能够帮助我们的客户获得更好预订体验的一部分。 iOS的Hotels.com高级产品经理Will Parkinson表示最好: “我们很高兴能向美国用户推出Apple Pay。 我们成立了专门的团队,专门将Apple Pay交付到我们的应用程序中,可以说我们真的很喜欢与Apple Pay合作。 我们特别喜欢使用PKPaymentButton。 作为一家需要支持多种不同语言的跨国公司,PKPaymentButton能够根据文本输入和屏幕分辨率动态调整大小的功能非常有用,这使我们能够对设计进行完美的压力测试。 我们还喜欢使用PKPaymentAuthorisationViewController,它非常容易使用,并为我们提供了非常有用的委托回调,这使我们的生活变得更加轻松。 我们很高兴能向客户首次推出Apple Pay,我们期待在不久的将来推广到更多销售点。” 关于Apple Pay的兴奋超出了我们的产品团队,整个业务部门都希望看到我们的客户使用Apple Pay,以帮助我们获得我们都在努力的无与伦比的预订体验。 我们的第一个Apple Pay版本仅在美国提供,但我们会尽快寻求将其扩展到其他国家的机会。 我们在89个销售点运营,可以说,我们正在努力在尽可能多的国家/地区中在我们的应用程序中启用Apple Pay。 随着越来越多的Apple客户使用支持Apple Pay的设备,以及越来越多的国家/地区的支付处理器被添加到Apple Pay平台,我们希望满意的iOS客户数量呈指数增长! Hotels.com将Apple Pay视为转换应用程序客户的长期收益,但更重要的是,我们看到这为客户提供了巨大价值,因为他们现在可以选择支付住宿费用的方式。 我们现在对客户正式推出Apple Pay感到非常高兴!

我们能否使用Electra越狱真正越狱iOS 11.3

大家好! 自从Electra越狱正式发布以来已经有一个多月的时间了,这是唯一一个可以为iOS 11-11.1.2安装Cydia的越狱工具包。 很高兴通知大家,随着Cydia下载的开始,Electra越狱终于成为iOS 11.0的全面突破。 现在是时候以这种显着的缓解开启越狱故事的新篇章了。 由于每个人都在这个勇敢的时刻焦急不已,这里是我们的旁白,以突出和阐明iOS 11.3越狱的整体状况。 开始了。 使用Electra越狱iOS 11.1.2 正是由于CoolStar进行了这一勇敢的审议,这也将支持您越狱iOS 11.1.2。 该实用程序仅是64位的,并且仅支持运行iOS 11.0或更高版本11.1.2之上的任何版本的iPhone,iPod Touch和iPad。 通常,您必须通过Cydia冲击器来侧面加载IPA文件,以将特定应用程序带到设备上。 一旦应用程序存在,只需将其打开并点击越狱即可。 然后导航到“设置”并配置相应的配置文件。 而已。 然后,您将能够遇到所有越狱功能。 简而言之,除了面向开发人员的功能外,Electra的其余所有功能都与LiberiOS类似。 即使具有与Ian Beer于2017年与pwn相关的开源项目相同的利用,兼容性和整体功能还是存在的。目前,现有实用程序无法在11.2、11.2.1、11.2.2或11.2.5之上运行。 如果安装了任何人,很遗憾地回想起他们,因为他们别无选择,只能紧紧抱住希望将来越狱的版本。 如何使用Electra越狱iOS 11.3 正如我们所承诺的,以下是有关iOS 11.3越狱的一些重要注意事项,iPhone,iPad或iPod touch用户应将其视为Cydia爱好者。 我们真的可以使用Electra 越狱iOS 11.3吗? 目前,Electra是最成功,最稳定的越狱工具包,可用于越狱并在运行iDevices的iOS 11.0上安装Cydia。 事实是Electra最多支持iOS 11.1.2版本,但Apple通过修补11.0 iOS更新中使用的漏洞,发布了更高版本的iOS 11.2。 因此,目前,越狱者无法使用新发布的Electra越狱对iOS 11.3进行越狱。 不用担心,目前正在着手寻找最新Apple移动操作系统和越狱社区漏洞的世界著名黑客和开发人员将在不久的将来听到好消息。 下载Cydia以获取最新的iOS更新 尽管通过Electra下载Cydia背后存在一些问题,但一切似乎都很顺利。 现在,那些希望越狱的人也将成为Cydia的用户。 从现在开始,它将不再是以开发人员为中心的实用程序。 任何人都可以开展并直接获得可观的Cydia应用商店。 与主题文件夹和.deb告别,根本无需花很多时间就可以更轻松地下载Cydia 。 您最想采取哪些调整来将iOS 11.1.2过渡到iOS 11.0? 这是机会。 从现在开始,毫无疑问,Cydia安装程序将在整个第十一章iPhone操作系统章节中适用。 希望很快在iOS […]

发现足够的问题来构建应用程序(以及无人机解决方案的诞生方式)

我在无人机行业工作了三年,我可以肯定地说这是一个疯狂的过程。 成功被广泛定义为您的市场目标和抱负,与所有市场一样,成功与否取决于效率和运营策略。 对于在研发方面投入不大的大型组织来说,在维持财政责任的同时最有效地工作有时会很困难。 无人机行业也不例外,低廉的市场壁垒导致大量公司涌入,最终降低了普通服务提供商的现场工作价格,使成功更加困难。 但是,一些公司并未受到这种无人机服务的商品化的影响。 早期建立了坚实基础的公司现在为T-Mobile,Skanska Construction等大型公司以及更多大型公司提供生产工作。 一些公司通过政府合同获得了成功,并为USFS,NOAA和NPS提供服务。 其他公司更改了整个业务模型以适应这些低价位。 幸运的是,我为公司工作(Ryka UAS),因为我们在无人飞机部门取得了巨大的成功。 自2014年以来,我们与无人飞机合同的份额就很高了,例如与西雅图市就UAS法规开展合作,并自2014年以来为一些财富500强公司提供每日航班。我们的团队已经花费了8000多个小时的飞行时间,并且持续不断试图改善无人飞机的数据,遥感和分析能力。 随着生产工作变得越来越频繁,我们转向了可帮助我们实现更好的现场优化和沟通的解决方案。 无论是在单一运营中还是在多团队商业企业中工作,我都寻求一种提高运营效率的方法。 并希望与sUAS社区共享此解决方案。 Go Pilot就是这样创建的,我认为这些信息是构建应用程序的完美催化剂。 幸运的是,我一直对图形设计充满热情,因此我开始构建UX / UI。 我与Microsoft的一些软件工程师合作,现在我们正在创建一种解决方案,有望解决我们面临的许多挑战。 那么,什么是飞行员? Go Pilot是我创建的一款应用程序,旨在解决sUAS操作中面临的这些挑战。 随着任职人数的增长,我们可以制造一种产品,该产品可以通过一些应用程序界面无缝地部署程序。 该应用程序将与DJI等公司以及最初用于LAANC提交的Airmap集成,并希望随着我们平台的发展而更多的公司。 我们的自动驾驶解决方案将以商业为重点,并且易于理解,以捕获,轻松存储和部署无人机数据解决方案。 目前,我们正在开发中,但是随着时间的流逝,我们将发布更多的产品和技术信息,我一直希望与人们合作,并乐于听取我们将来可能合作的方式。 谢谢阅读, 罗伯特·埃特

在iOS上构建Fat WebRTC框架

通过提供适用于iOS,Web和Android的高级开源WebRTC SDK,Telestax致力于在开发WebRTC应用程序时尽量减少App&Web开发人员与Open Source Restcomm平台集成所花费的精力。 最大的挑战之一是为移动设备(尤其是iOS)正确捆绑WebRTC,它比Android更具限制性。 值得庆幸的是,在过去的几年中,这种情况已大大改善。 在本文中,我们将介绍一些构建iOS的WebRTC框架的最佳实践。 构建用于在iOS设备和模拟器上进行部署的通用(即Fat)框架并不总是那么容易。 在过去,您通常必须为每种体系结构分别构建一个静态库,然后将它们全部组合成一个通用库。 然后,您必须将头文件与lib捆绑在一起,以便iOS App能够正确利用WebRTC媒体工具。 这意味着需要时间和大量的精力来使一切正确。 我们可以花很多篇幅描述艰难的局面,但现在让我们关注一下。 现在,您可以自动创建iOS框架而不是静态库,这使得分发变得更加容易(因为标头被捆绑在一起),并且还配置了GN(WebRTC人们最近推出的新忍者生成器)使其通用从一开始。 无需进行多次迭代,每次迭代都针对一个体系结构,然后手动进行合并。 所以这里… 提取并同步 首先,您需要按照iOS的WebRTC官方指南的“获取代码”部分中所述获取和同步WebRTC代码,这应该非常简单。 用GN生成忍者文件 在这里,我们将与官方指南有所不同,因为我们的目标是: 一次构建多种架构 直接从命令行提出WebRTC框架 这是GN命令,用于组合我们所需的功能: $ gn gen out / Release-universal -args =’target_os =“ ios” target_cpu =“ x64” Additional_target_cpus = [“ arm”,“ arm64”,“ x86”] is_component_build = false is_debug = false ios_enable_code_signing = false’ 哪里: out / Release-universal是忍者文件的生成路径以及生成位置。 […]

使用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(将在下面创建)来将用户导航到正确的屏幕。 我们的视图将使用以下三种方法来启用功能。 […]

使用FFMPEG和VideoToolbox在iOS上加速H264解码

在LIVEOP,我们致力于以简洁的方式为急救人员提供最相关的信息,同时又不影响我们的无缝用户体验。 当我们与全球领先的无线(随身)摄像头系统提供商Zepcam合作时,我们希望确保我们提供的体验符合我们的高标准,而不影响性能或效率。 Zepcam托管的摄像机流有几种不同的格式,最重要的是,HTTP Live Streaming(HLS)是iOS生态系统中的一流公民,内置了AVFoundation和RTSP(实时流协议)的内置支持。 HLS流通常用于直播电视和新闻广播。 它专注于为观看者带来无缝体验:不允许丢帧,不允许无序播放帧,并保留少量即将出现的帧缓冲区以确保流畅的播放体验。 Zepcam流被激活的情况通常会危及生命。 警员可能在试图装防暴动时从佩戴在身上的摄像机进行实时直播,或者在顶部装有摄像机的梯形引擎可能会鸟瞰大建筑物的火灾,包括消防员在地面上的位置。 我们对无缝用户体验的定义与HTTP Live Streaming所规定的不同:在我们的案例中,向用户显示的帧尽可能实时是很重要的。 它们可以无序到达,并且可以丢弃几帧,只要这有利于流的实时性。 加上我们的要求,我们开始在UDP上使用RTSP。 Apple不在任何高级框架中提供对RTSP流回放的支持。 用于回放视频流的所有高级系统类MPMoviePlayerController , AVPlayerItem和AVPlayer不支持RTSP流。 幸运的是,瑞士的音频/视频处理军刀FFMPEG配备了正确的工具来处理和解码RTSP流。 FFMPEG在开源社区已有17年的历史了,自那时起,它就已经成为VLC,Google Chrome和Chromium¹等各种最终用户应用程序背后的可靠力量。 设置FFMPEG Zepcam提供的RTSP流使用H264编解码器进行编码。 为了防止最终iOS应用程序文件(.ipa)的二进制文件大量增加,我们选择从头开始编译最新版本的FFMPEG(v4.0.1),仅启用我们希望使用的那些功能。 我们使用此处找到的出色的构建脚本,并进行了一些调整: 将FF_VERSION变量更改为4.0.1 将DEPLOYMENT_TARGET更改为iOS应用程序的部署目标 更改CONFIGURE_FLAGS以启用位码,并禁用除流所需的所有功能之外的所有功能: CONFIGURE_FLAGS =“-启用交叉编译–disable-debug –disable-programs –disable-doc –extra-cflags = -fembed-bitcode –extra-cxxflags = -fembed-bitcode –disable-ffmpeg –disable-ffprobe –disable-avdevice –disable-avfilter –disable-encoders –disable-parsers –disable-decoders –disable-protocols –disable-filters –disable-muxers –disable-bsfs –disable-indevs –disable-outdevs –disable-demuxers –enable-protocol = file […]

让我们结合以上两个定义,并设想将其应用于编程。

静态定义:“缺乏动作,行动或变化,尤其是在无可否认或无趣的竞争中。 图书馆的定义:“一栋建筑物或也包含供人们阅读,借阅或参考的书籍,期刊和电影的收藏” 让我们结合以上两个定义,并设想将其应用于编程。 你在想什么? 也许您认为静态库是一个包含无法移动的信息的东西,或者您就像其他文件一样,认为它只是一个由一个和一个零组成的文件。 无论您在想什么,您都可能正确或接近正确答案。 库和其他文件之间的主要区别是您无法执行库。 相比之下,当您通过任务管理器查看应用程序时,它们正在执行。 这些应用程序可能是由于您的计算机中的库 但是它们如何工作? 要在Windows上识别静态文件,扩展名是* .LIB,在其他操作系统上,扩展名是* .A。 我们的静态库将在编译期间使用。 换句话说,在编译过程中,我们使用知道如何打印内容,函数和代码并将其移至应用程序的库。 您可能会认为它类似于复制和粘贴,并且您非常正确。 建立交流图书馆 首先让我们创建一个头文件 /* Filename: lib_mylib.h */ void fun( void ); 编译库文件。 gcc -c lib_mylib.c -o lib_mylib.o 创建静态库。 此步骤是将多个目标文件捆绑在一个静态库中(有关详细信息,请参见ar)。 此步骤的输出是静态库。 ar -rc lib_mylib.a lib_mylib.o 瞧! 现在我们的静态库可以使用了。 现在我们可以将lib_hello_static.a复制到其他地方以使用它

借助新的iMessage集成,可以更轻松地进行团体订购

作者:软件工程师Andy Mai 今年早些时候,在苹果全球开发者大会上,我们为DoorDash客户演示了一种直接从新iMessage应用程序下订单的方法。 在过去几个月中完善了该功能并成功推出了适用于iOS10的新iMessage之后,我们很高兴看到新的DoorDash iOS应用现在可以使用适用于iMessage的DoorDash。 现在,您可以与同事共进午餐,计划足球前的后挡板,或为整个家庭订购晚餐,所有这些都可以通过现有的iMessage群组聊天进行。 那么它是怎样工作的? 首先,请确保已为iMessage启用了DoorDash应用。 为此,请在iMessage中单击应用程序商店图标,然后在“管理”选项卡下选择添加商店,并将DoorDash应用程序滑动至“打开”。 将应用程序安装到iMessage之后,创建群组消息,单击应用程序商店图标,然后选择DoorDash以查看您喜欢的餐厅的列表,就像在DoorDash应用程序中一样。 从那里开始,就像发送短信一样简单。 一旦您从DoorDash的出色选择中选择了一家餐馆,您的对话中就会出现一条新的聊天消息,并且可以立即进行小组订购。 只需将消息发送给iMessage群聊中的其他参与者,他们就可以出发了。 通过点击聊天气泡,已经拥有DoorDash应用程序的人将被带到商店的菜单页面,他们可以在其中添加项目到群组订单中。 然后,他们可以通过更新聊天气泡将更新(即Jeff添加了3个项目)发送给其他参与者。 没有安装DoorDash应用的参与者将被提示直接在iMessage中下载它,然后可以继续将他或她选择的项目添加到组订单中。 一旦每个人都选择了自己的食物并将其添加到购物车中,小组订单的创建者就可以随时准备好提交订单。 瞧,已经为团队午餐定购了食物! 在DoorDash,我们一直在寻找使交付比以往更轻松的方法,我们很高兴看到这种集成使DoorDash与大多数人每天使用的应用程序无缝地协作。 因此,下次您要招待一群朋友共进晚餐时,请不要着急获得每个人的订单。 只需发送一个小组iMessage,让他们做出您想要晚餐的艰难决定。 然后坐下来,让DoorDash处理物流。

使用Angular 2和NativeScript扩展现有的iOS应用

与我之前的文章类似,我将向您展示如何使用NativeScript和Angular 2扩展iOS应用程序。 构建适用于iOS的NativeScript应用程序: tns构建ios 2.将您的NativeScript app \ platform \ ios \ YourAppName \ app文件夹复制到iOS应用程序: 3.将您的NativeScript应用\ platforms \ ios \ internal文件夹复制到您的iOS应用旁边: 4.添加对NativeScript.framework和TNSWidgets.framework的引用 注意:两者都可以在NativeScript应用程序 \ platforms \ ios \ 和 \ lib \ ios \ 文件夹中找到。 5.添加运行脚本和链接器标记以构建和使用元数据: 注意:运行脚本应该是第一个构建阶段。 6.从您的应用程序中显示NativeScript视图控制器: 从这里获取应用程序: https://github.com/enchev/ios-ng2-tns