指南:将您的应用发布到App Store

有关如何发布第一个应用程序的分步指南 在使用iOS应用程序几个月后,您终于可以将其发布到App Store上了。 您查找Apple的文档并找到了iTunesConnect开发人员指南。 您会发现许多文档,而没有任何明显的“执行此操作以将您的应用程序提交以供审核”清单。 在本系列文章中,我们将解决此问题。 我们将帮助您浏览文档,并跳过不需要的屏幕。 这是第1部分,如何将实际应用上传到App Store。 后面的部分将处理iTunes Connect及其周围发生的所有其他事情。 准备 如果还没有,则需要在Apple上创建一个开发人员帐户并注册开发人员计划。 您可以作为公司或个人来这样做。 您可能需要向Apple发送一些文件,因此请在提交应用之前先做得很好。 拥有开发人员计划帐户后,请确保Xcode知道它。 在“首选项”->“帐户”下的Xcode中为您的帐户添加Apple ID。 现在,Xcode可以为您解决大多数配置问题。 您还可以访问iTunesConnect。 前往那里,登录,然后选择“协议,税收和银行业务”部分。 在发布应用之前,您必须接受其中一些协议并设置您的银行信息,才能获得付款。 您还需要根据国家/地区设置税收信息。 如果您已经拥有iTunesConnect帐户,请确保您的角色是管理员,技术人员,应用程序管理员或开发人员。 只有那些角色才能上传构建。 在iTunesConnect中创建应用记录 准备好上传应用程序时,可以将其添加到iTunesConnect。 (您可能应该首先在版本控件中对其进行标记。) 在iTunesConnect中,转到“我的应用程序”部分,然后单击左侧的加号以创建一个新应用程序。 您将获得一份小表格,以填写您的应用信息: 这些领域中的大多数应该是不言自明的。 捆绑ID是您应用的唯一标识符。 它应该与您在Xcode中为目标的Bundle Identifier设置的内容相匹配。 如果您已在In App Purchase或Game Center中设置(或其他一些功能),则应该已经在Developer Portal中设置了Bundle ID。 如果还没有,则可以转到开发人员门户立即创建一个门户,或者选择通配符并从Xcode复制包ID。 如果要添加IAP或GameKit,则可能应该立即将Bundle ID添加到门户。 点击创建,iTunesConnect将为您的应用创建一条记录。 在左侧查看并在iOS App下选择1.0版本。 向下滚动到构建部分。 在这里您可以看到自己上传的应用。 您会看到一条注释,可以使用Xcode或Application Loader。 您可能已经在Xcode中设置了所有内容,因此我们假设您正在使用它。 应用加载器 什么时候使用Application Loader? 如果您是从开发人员处获得的构建文件(ipa格式)并且未安装Xcode,则可以使用Application […]

仅iPad,gamedev –第4周–游戏计划和原型

我们要开发哪种类型的游戏? 这应该如何工作? 本周,我们将定义并创建一个可视化原型进行处理。 我专注于构建游戏是“易于玩且难以击败的游戏”。 具有挑战性吧? 许多游戏都采用这种哲学,它们是休闲游戏中最恶毒的类型。 当然,我们(您)可以制作一个功能全面的游戏,但这并不是本系列文章的目标,正如在第一周提到的那样,我假装只是展示我使用iPad作为开发网页游戏的主要且唯一的计算机的经验。 在游戏中,有什么比独自移动的玩家更容易的事情了,而您只需要以某种方式帮助他,也许是通过跳动或改变他/她/它正在处理的环境? 我们可以从这里开始,并在Sketchbook应用程序上画一些想法: 保留尽可能多的想法草图,因为它们在某些时候甚至将来的游戏中都可能有用,也许可以通过组合或简化来实现(甚至更多)。 我的游戏将讲述一个忍者机器人被锁在笼子上以测试其下一条彩色皮带的情况。 并排运行而不停止,它会自动大幅削减敌人,我们将通过触摸屏幕使其跳跃来帮助它避免敌人的攻击和等级陷阱。 一旦您对自己的想法(疯狂或不疯狂)感到满意,请转到Pixaki应用程序并开始绘制一些正方形以用于原型。 为什么是正方形? 因为在开发的这一步中,您必须首先尝试您的想法,以确保保持这种方式足够有趣。 如果不好,您可以简单地尝试另一个想法。 到目前为止,我的伟大艺术被定义为绿色方块代表我的英雄,蓝色代表敌人,黑色代表环境,橙色代表某种陷阱,灰色代表我们的英雄和敌人的剑。 每个正方形的大小为16×16像素,图像画布的大小可以是所需的任意倍数。 您现在可以将此图像导出为PNG文件,并将其导入我们游戏文件夹内的Koder应用中。 在下周,我们将开始使用这些图像来构建我们的功能游戏原型,并使用大量代码开始使其具有响应能力。 一个星期见!

通过重新运行不稳定的XCUI测试来稳定iOS CI

Apple在WWDC 2015上发布了Xcode UI Testing aka XCUI Test framework,该框架无需使用Appium,Calabash或KIF等任何第三方工具即可直接从Xcode对iOS应用程序进行UI测试。 这些工具自称为移动测试框架,但实际上只不过是UIAutomation或Instruments的包装器而已。 随着Apple停止支持Instruments技术,iOS 10的发布打破了所有这些开源移动测试自动化框架。 剩下的唯一选择是使用Apple的XCTest框架,或者等待那些工具围绕XCUITest构建包装器。 XCTest不是一个新的框架,但是随着Xcode发行版的发展,它发展得相当不错。 您可以在此处阅读有关使用XCTest进行iOS应用测试的优缺点的更多信息 XCUITest +持续集成问题 XCUITest框架仍然是新的,有些用户已经抱怨它非常脆弱,尤其是当我们针对持续集成(CI)服务器运行时。 XCUI测试似乎在本地通过,但是这些测试对CI不确定。 您可以在StackOverflow上找到许多有关XCUITest的问题。 结果是,CI管道变得不可靠且不受信任。 团队一直忽略失败的UI测试,每个人对这些UI测试失去信任,这可能成为持续集成失败的原因。 损坏的UI测试始终被开发团队忽略。 但是,持续交付将不允许将损坏的版本部署到生产中。 现在,每个人都注意损坏的UI测试。 为了解决问题,团队可能会执行以下操作以确保您的UI测试尽可能具有弹性。 遵循“端口和适配器”模式,以覆盖域层的所有业务逻辑,而无需编写任何UI测试。 很好的例子就是用Fitnesse编写更快的iOS验收测试或合同测试 考虑使用存根后端或模拟Web服务器隔离测试UI,以防止意外数据替换真实Word UI测试。 添加了XCUI计算的重试,以找到应用程序上的UI元素或循环运行,直到找到XCUIElement。 在每个CI构建或每个测试套件上重置模拟器。 向XCUITests添加了静态等待,以使测试可靠。 经过所有这些努力,也许很少有测试仍不确定,并且随机失败,人们会感到沮丧。 这是UI测试的常规行为,它们脆弱,易碎且难以维护,无论您付出了多少努力来进行修复,也无论您为防御它而付出了多少防御,运行时环境的特殊性都可能使您感到阴谋。 现在,由于不稳定的UI测试,您的正式发布已被阻止。 现在做什么 ? 解 在上述情况下,我们可以尝试一件明智的事情。 让我们以失败的XCUITests为例,尝试重新运行它们,但是挂起一个,还有另一个问题。 苹果的命令行工具“ xcodebuild”仍然没有从命令行运行单个XCTest的简便方法。 可能需要使用Xcode方案进行测试,但是将单个测试传递给“ xcodebuild”有点棘手。 新版本的“ xcodebuild”具有“仅测试”选项,但是使用脚本很难实现。 幸运的是,有一个名为“ fastlane-plugin-setup_fragile_tests_for_rescan”的fastlane插件可以解决不稳定的XCUI测试问题。 全部的感谢归功于插件“ lyndsey-ferguson”的作者。 这个插件做以下事情 从快速通道扫描生成的Junit报告中进行失败的测试 修改指定的XCUITest方案以跳过通过测试和失败测试的方案 重新运行“扫描” 3次以查看测试结果。 […]

iPhone’unuzdaolmasıgereken mobil oyunlar:Oddmar

Mobil oyun deninceaklımızaözelliklebirkaçyıldırzorluk seviyesiyüksekveoldukçabasit grafiklere sahip 2D oyunlar geliyor。 观看视频,观看视频,然后观看视频。 商业上的其他人可以享受到更多的乐趣。 Ortadaböyleciddi bir gelirsözkonusu oluncatasarımcılarveyapımcılardadoğalolarak benzeryapıdaoyunlar yapmayaodaklanıyorlar。 Uzunsüredirdişedokunurşöyleağıztadıylaoynayabileceğimbir mobile oyun bulamamaktanyakınıyordumki… Oddmarhızırgibiyetişti。 Kaliteli grafikler,müteşemmüziklerve ses efektlerine sahip oyundaüzerinekafayorulmuşbir senaryo ve bu senaryonun harikaanlatımıdaoyun boyunca bizeeşlikediyor。 BuartıözelliklerinyanındaOddmar’ınkontrolleri degerçektençokbaşarılıvetümbunlarbirleşinceoynanabilirliğiyüksekseviyede harika bir aksiyon macera platform oyunu ortayaçıkmış。 埃斯凯什希尔(Esteşehir’dekidörtkişilikbir oyunstüdyosuolan Mobge’ye ait)。 Oyun ilkaçılışanimasyonuyla bizi Viking’lerin pusludiyarınasokarken,animasyonsonrasıbaşkarakterin yeraldığıharika birbaşlangıçekranıbizikarşılıyıceuşuuuuuuceuşınşınızınızınızınnas […]

认识我们的厨师:뱅크샐러드iOS팀을만나다

与我们的厨师 Chef见面레이니스트지엔지니어링리즈입니다。 App Store更新日期2018年5月14日,在iOS上添加了사내(aka기사네)。 안녕하세요? !기자소개다! 찬울:안녕하세요! 만사한지는되었지만,1分3分째iOS팀에서김찬울입니다。 iOS的첫젝트의게。 보영:나이는가아니지만,입사5개월차이자박보영입니다。 했었는데로벌했었는데했었는데。。일하고일하고일하고일하고다。。있습니 主题:간편결제서비스P앱,서비스개발하다레이 니스 안관수입니다안관수입니다。 레이니스트엔지니어링되셨나요되셨나요되셨나요? 内容: Web팀이사용하는 기술스택 이인상깊어서 Web팀으로합류하게。 중,iOS자원해서이새롭게다는기얘iOS자원해서기될가있었습니다。 없는관련된관련된식하나도없는없는같은데같은데같은데같은데적인적인적인가가가가있나요? 内容:제가서비스를,좋아하는같아서같아서원하게원하게원하게원하게원하게원하게원하게 관수비슷한데요비슷한데요비슷한데요 비슷한데요관수비슷한 데요비슷한 데요비슷한 데요비슷한 데요비슷한 데요비슷한 데요。。。。。。。。。。。。。。。 양한다양한가계부이나와있는데,뱅크샐러드를이유가있나요? 主题:iOS的복사계부붙여넣사-붙여넣기를사실상기로로。 들었어요다뱅크샐러드를용해용해용해입력해주는입력해주는입력해주는들었어요들었어요들었어요들었어요들었어요들었어요 회회는는니니니있던원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게원하게 보영:관수님이랑。 라는이라는,존에는개발라는유유었어요었어요었어요었어요었어요었어요었어요었어요었어요었어요 배우고,배우고사에가면다지사의。 产品6가상용하고용하고용하고앱앱고고서비서비스 。 。로바다。 😆😆 아닌적으를를니니니니아닌아닌니의의의니니니원하게 iOS팀을! 보영:음떠오르는이미지는말로는잘잘잘。 iOS등장한초기부터있고있고,른를를를를를고고고처음처음팀팀팀팀팀팀팀팀팀팀 찬울:이게바로온고지신? 😆 있어요영님영님양한양한술을술을술을도입하고도입하고도입하고도입하고도입하고도입하고도입하고도입하고도입하고도입하고도입하고있어요있어요 在iOS平台上100%Swift升级,在RxSwift가가上。 고리고MVVM향하고향하고향하고향하고。 술적인만만만만만만만만만만만만만공유하고공유하고라고라고라고라고라고라고라고라고라고라고라고만 主题:관수로서로에이피드백이되게이라고。 부분부분부분서피드백을두려워하두려워하두려워하않고않고같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요같아요 内容: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 […]