Tag: ios

将应用程序发布到App Store时的常见应用程序拒绝。

在开发应用程序之前,重要的是要熟悉我们用来审查所有应用程序的技术,内容和设计标准。 我们重点介绍了一些最常见的问题,这些问题会导致应用被拒绝,以帮助您在提交应用进行审核之前更好地准备应用。 崩溃和错误 您应仅在应用程序完成并准备发布时才将其提交以供审核。 在提交之前,请确保在设备上彻底测试您的应用并修复所有错误。 链接断开 您应用中的所有链接都必须正常运行。 所有应用都需要具有最新联系信息的用户支持链接,并且如果您要提供自动续订或免费订阅,或者您的应用属于“儿童”类别,则还必须提供指向隐私权政策的链接。 占位符内容 完成应用中的所有图像和文本后,再将其发送以供审核。 尚在进行中且包含占位符内容的应用尚未准备好分发,因此无法被批准。 信息不完整 在iTunes Connect的“应用程序查看信息”部分中输入查看您的应用程序所需的所有详细信息。 如果某些功能需要登录,请提供有效的演示帐户用户名和密码。 如果要设置特殊配置,请提供详细信息。 如果功能需要很难复制的环境或需要特定的硬件,请准备提供演示视频或硬件。 另外,请确保您的联系信息是完整且最新的。 说明不正确 您的应用说明和屏幕截图应清晰,准确地传达您的应用功能。 这可以帮助用户了解您的应用,并为App Store带来良好的体验。 误导用户 您的应用必须具有广告宣传的效果,并且不应给用户以印象,该应用并非如此。 如果您的应用似乎承诺某些功能,则需要交付。 不合格的用户界面 苹果公司在干净,精致和用户友好的界面上高度重视。 请仔细规划设计并遵循我们的设计指南以及UI设计的“注意事项”,以确保您的UI满足这些要求。 广告 将应用提交审核时,系统会询问您是否使用广告标识符(IDFA)投放广告。 如果您指示您的应用使用IDFA,但没有广告功能或无法正确显示广告,则您的应用可能会被拒绝。 确保在iOS设备上测试您的应用,以验证广告能否正常运行。 同样,如果您指示您的应用程序未使用IDFA,但使用了IDFA,则您的应用程序将进入“无效二进制”状态。 Web剪辑,内容聚合器或链接集合 您的应用程序应引人入胜且有用,并充分利用iOS独有的功能。 在iOS应用中提供服务的网站,未针对iOS格式化的Web内容以及有限的Web交互都不能构成高质量的应用。 重复提交类似应用 提交本质上相同的多个应用程序会阻塞“应用程序审查”流程,并有被拒绝的风险。 通过将您的应用合为一体,改善您的评论体验以及未来用户的体验。 持久价值不足 如果您的应用程序没有提供太多功能或内容,或者仅适用于小型利基市场,则可能无法获得批准。 在创建您的应用程序之前,请在App Store上查看类别中的应用程序,并考虑如何提供更好的用户体验。 参考和更多详细信息在这里:苹果

AppStore收入2017年2月

好的,二月份的数字在里面,所以让我们讨论一下。 正如我在上一篇帖子中所解释的,2月份是我将应用程序价格从3.99欧元提高到4.99欧元的月份。 现在,对于许多开发人员而言,AppStore的销售一直呈下降趋势。 一些博客文章令人沮丧,而金矿似乎越来越远。 尽管如此,我还是决定提高价格而不是参加最低竞争,这有两个原因。 首先,我碰到了一个类似的竞争应用程序,该应用程序可以免费开始使用,但随后每年需要以7.99欧元的价格购买才能继续使用。 我认为这是一个不错的价格,但我不知道开发商以这些价格能赚多少钱。 我从未在总收入排名前20的应用程序中看到过该应用程序,因此我的猜测并不多 。 尽管如此,每年的7.99欧元与一次性3.99欧元的价格相比还是相差很大,因此我决定将这一差距缩小一些。 第二个原因是,以纸质地图形式购买网络仍然昂贵得多。 比利时的网络覆盖5个省,覆盖一个省大约需要5张地图。 请记住,随着网络的变化,用户将需要购买新地图。 一张地图大约是€5.99,因此您可以进行数学计算。 与纸面价格相比,我的应用程序应该接近20欧元,但这也许有点过于乐观。 提价的另一个原因是一些AppStore心理。 那里有很多免费应用程序和99美分应用程序,也许-只是现在-现在是停止玩该游戏并提高价格的好时机。 总是有一些买主对低质量,低价格的应用程序感到厌倦,并且想要花更多的钱在未来几年会喜欢的东西上。 最终,我进行了一些数学运算,并将价格从3.99欧元更改为4.99欧元,这意味着我可能会损失约20%的销量,但最终仍会获得相近的价格。 到目前为止,价格上涨一直很好。 我还没有看到音量下降。 销售仍然非常依赖天气,但是在好周末,我的销售也差不多,我只是赚了些钱。 正如您在上图中所看到的,无法精确确定价格上涨的地方。 不过,我会告诉您:它在2月17日,就在该月的最佳周末之前。 上图显示了荷兰应用商店中导航类别的前20名。 12个应用的价格为€3.99或更高。 9个应用的价格为€4.99或更高。 我一直在不停地检查这个前20名,这些数字一直是一致的。 比利时的AppStore显示相似的数字,因此目前€4.99似乎是个不错的地方。 所以,数字。 我在去年2月的表现上取得了很大的进步,但比2015年2月还差一点。 公平地说,2015年是令人敬畏的一年。 如果再有一个创纪录的月份,那会很好,但是离我有史以来最好的2月份还不到……是的,我会接受的。 广告 我未来几个月的计划是花一些钱在Facebook广告上。 我已经设置了几个广告系列。 您可以执行的过滤和定位数量惊人。 剩下要做的就是输入信用卡详细信息并启动它。 很快会有更多。 游行 我预计在接下来的几个月中不会打破任何记录。 从3月开始,我的应用程序的销量在2014年确实出现了爆炸式增长,甚至超过这些数字甚至接近它们都非常疯狂。 不过,除了网络更新外,我还没有对这些应用程序做任何工作,只要它们的销量相当不错(阅读:比去年更好),而无需太多关注,它们就是不错的被动收入。 在当今的AppStore经济学中,这是个好地方。

足够! #AppStoreWalkout #iToo

NotchX 自定义Notch壁纸 魔术缺口- 自定义缺口 魔术缺口- 自定义缺口 Magic Custom Notch-壁纸 NotchRemover – 自定义Notch去刘海 X的自定义缺口 自定义缺口 -魔法壁纸 魔术定制 – 缺口壁纸 定制刘海缺口 Notch Pro — 自定义 Notch 魔术定制缺口 —好奇怪 iPhone X的可爱壁纸 可爱的缺口 – 自定义缺口 魔术缺口样式 无缺口 〜 自定义和删除 缺口定制器 魔术缺口 – 自定义和删除 Costom Notch —耳朵壁纸 定制多样化缺口 当您的应用程序被克隆并且克隆使用您的应用程序名称时,除了在iTunes App Store内容争议中向Apple报告之外,您将无能为力。 我报告了这些应用。 他们花了自己的时间,向我报告的所有应用程序开发人员发出了通知。 他们都不在乎。 所有这些开发人员都在问“ Custom Notch是您的商标吗?”“向我们证明Custom Notch是您的商标!”我试图向开发人员和Apple Legal团队解释,他们违反了App Store审查指南4.1。 […]

阿拉伯应用程序相关吗?

昨晚,我和一个朋友在讨论阿拉伯语应用的相关性。 对于开发阿拉伯应用程序与走向全球化,我们有一些有趣的争论。 反对阿拉伯语应用的原因: 国内的阿拉伯应用经济规模还不够大。 使用国家或本地内容将不会有利可图。 习惯使用英语或法语的应用程序的用户在某种程度上对它感到更舒服 使用阿拉伯应用很难获利。 这是因为信用卡普及率较低,而越狱设备数量较高。 仍然没有购买软件的文化。 阿拉伯人并不总是拥有相同的文化,例如,来自Marocco的用户可能与来自伊拉克的用户具有不同的幽默感。 什么代表阿拉伯语应用程式: 大量的内容/想法。 应用程序文化正在成为主流。 它仍然是一个利基市场,并且可能具有智能概念,这可能变得更加相关 减少竞争 潜力巨大 这是我们的文化,我们必须保持下去 如果我们看看为什么该地区的开发人员成功的原因,我们很快就会看到他们的产品是国际化的。 例如: 德曼达 班达应用 天气高清 我不知道通过在该地区销售该应用程序可以获利的阿拉伯文应用程序,如果我错了,请纠正我。 我很想知道我错了。 尽管如此,我认为阿拉伯语的内容极为相关,但要赢利还需要一段时间。 一旦达到这一水平,应用程序的质量就会提高,因为公司将争夺覆盖阿拉伯语的受众。 因此,由于阿拉伯应用生态系统中的资金流很少,只有少数公司生产高质量的内容以具有足够的吸引力来吸引大量销售。 我希望这会很快改变。 您实际上对付费购买有何看法? 您会为应用付费吗? 我们使用的最出色的阿拉伯应用程序之一是先知穆罕默德的《塞拉故事》,您可以从这里找到更多信息:https://sira.co

切换动量(Web-> iOS)

成为自学成才的iOS开发人员似乎很艰巨…… …或者至少它起初看起来像它。 随着移动设备在21世纪变得越来越普遍,这无疑是当前最酷,最令人兴奋的领域之一。 也许在未来5-10年内完全取代我们的台式机和笔记本电脑……?🤔 Swift是Apple推出的一种新的但很有前途的编程语言,正在越来越流行。 目前,它是第4版(非常稳定)。 Xcode仍然很痛苦。 ARKit看起来太酷了-随着iOS Beta和设备的推出,这很有希望。 开发人员社区是超级支持。 (不适用Twittersphere) **我将在另一篇文章中介绍AR / VR技术。 那将是主要的。 来自Web开发(JS)的背景,Swift语法非常容易掌握。 而且不要让我开始了解Swift / Android的Kotlin相似之处。 再见,Java? 👀 作为iOS开发人员到达那个地方将花费大量时间,练习和浪费很多咖啡。 自2017年底以来,我一直在这里和那里散列一些小型教程,以了解创建iOS应用程序所需要的内容。 来自具有编程经验的Web开发人员背景,切换非常好。 去年,我已经厌倦了在WordPress和Shopify店面。 Web应用程序很棒,但是基于客户端的主要是没有初始上限的初创公司。 设计网站和移动应用程序很有趣-我可能仍然会坚持下去。 试图找到原因。 ♂♂️ 我目前正在和一位朋友一起挑战,每天至少构建一个“虚拟”应用程序。 这些“虚拟”应用程序只是展示了我最近通过测试所学到的概念或很酷的框架。 我很快会在一系列文章中分享。 我在GitHub上有一些应用程序的仓库。 其中大多数来自教程。 一些是精美的复制品,在此和那里进行了一些更改。 在大多数情况下,每天在学习新概念的同时创造一些东西是有益的。 它可以建立信心,特别是当您在没有帮助的情况下开始自己创建简单项目时。 *诚实的更新* ,哎呀,我目前落后三(3)个应用程序。 我的家伙,这个超级碗嘉年华真的很疯狂。 🦅🏆 从Web开发人员那里休息可能会令人生畏,尤其是因为框架等不断变化。 很大程度上解释了我转向更加稳定的事情。 我仍然很喜欢网络。 我不会离开你的 ❤️ 无论如何,这是我接下来几个月要关注的几个主题。 这里的大多数概念和范例都将有助于您进行iOS技术面试。

在iOS项目上使用Travis-CI和Fastlane设置CI

持续集成(CI)是一种很棒的软件工程实践。 它要求开发人员在每次提交之后频繁提交。 这样,可以自动运行测试,计算覆盖率,执行静态代码分析等,以确保每次提交都不会破坏构建过程并且不会带来副作用。 如果提交破坏了构建,则进行更改的人员将收到一封电子邮件,需要检查并修复构建。 通常,在构建结束时,会创建一个测试版本。 通常,这就是过程,但是各个公司的过程可能有所不同。 这种工作流程的好处来自频繁的集成-您很快就会发现问题所在,并有机会快速进行修复。 团队越大,拥有这样的自动化集成过程就越重要,因为在每次提交之后,都有可能破坏代码库。 在本文中,我们将使用Travis CI和Fastlane为一个开源iOS项目设置CI。 目标是在GitHub存储库上的每次提交上运行CI,并在自述文件部分中显示有关构建状态和覆盖率的信息。 实作 特拉维斯CI 首先,您需要在GitHub上拥有一个带有单元测试的开源iOS项目。 在这篇文章中,我将与即将发布的iOS框架GirdersSwift合作。 第一步是通过单击“使用GitHub登录”按钮将GitHub帐户连接到Travis CI。 系统将要求您提供对Travis CI的某些权限,以使他们能够访问您的开源存储库。 Travis CI对于开源项目是免费的,但是对于商业项目也有一些付费计划。 成功注册Travis CI后,您应该在仪表板中看到所有项目。 找到您要为其添加配置项的配置项,然后启用绿色开关。 这就是我们目前在Travis CI上需要做的所有事情。 有了这个小的更改,我们已经告诉Travis CI,它应该为GirdersSwift回购运行连续构建,但是我们仍然没有告诉它该怎么做。 Travis CI不知道它是iOS,Android,Java还是其他类型的项目。 它还不知道是否应该运行测试,计算覆盖率等等。 我们通过在GitHub项目的根目录下创建.travis.yml文件来提供此信息。 让我们看看这个文件应该包含什么。 osx_image:xcode9.3 语言:迅捷 脚本: – fastlane ios覆盖率 如您所见,我们告诉Travis CI,它应该使用Xcode 9.3运行构建,并且语言是Swift。 在脚本部分,我们提供了每次构建后都需要执行的步骤。 在这里,我们使用Fastlane进行测试和覆盖。 快车道 Fastlane是一个出色的工具,可以自动完成与iOS开发相关的所有繁琐工作,从测试,构建,创建发行版到部署到商店。 它基于在Fastfile中定义的通道的概念。 您可以在一个泳道中定义几个动作,并且已经开发了动作,这些动作是我们iOS工程师最需要的。 通过在项目的根目录中键入fastlane init ,为项目启用fastlane。 您也可以输入您的开发者帐户信息,但这不是必需的。 这将创建一个Fastlane目录,其中包含Fastfile。 现在,让我们定义我们的覆盖范围,它将用于执行连续构建。 default_platform:ios […]

我们新的视频消息传递实验的特殊设计说明了

为了使对话的体验量身定制,我们提出了一个有趣的界面,该界面将所有微型视频按时间顺序排列到水平卷轴中。 事实证明,这种布局使每个视频都感觉与其他视频有联系,就像一个视频是对前一个视频的答复。 就像一场真实的谈话。 ☝️比发短信更轻松,更快,更有趣 速度很重要,特别是与朋友一起闲逛时。 我们认为这很关键,您应该能够以自己想像的速度尽快说出任何话。 冲动的,就像我们在餐厅或酒吧里闲逛时彼此交谈的方式一样。 假设您还记得一次愚蠢的经历。 只需拨出该应用程序,按住那个蓝色大按钮,提醒您的朋友“一次”,然后释放即可发送。 communication主要的交流方式会跟随您 对我们来说,设计一种与朋友交谈的好工具的关键是使核心通讯方法始终可用。 无论您在应用中的哪个位置,这个蓝色大按钮(用于录制迷你视频)都会跟随着您,以防您想说些什么。 😫说出您的想法 每个迷你视频最长可以为一分钟。 一分钟而不是流行的10秒或7秒似乎是对话的理想选择。 它为人们提供了足够的时间讲故事,开玩笑并轻松地互相交谈。 beta我们的Beta测试人员每天观看40个视频,每天在该应用中花费近6分钟 Beta测试中有新婚,成群的朋友和夫妇。 甚至整个家庭。 他们告诉我们,现在这是彼此交流的首选方法,因为它非常轻松,有趣且易于使用。 现在,对我们许多测试人员来说,发短信已经过时了。 试试看,很想阅读您的反馈 我们今天将开放iOS的Beta版,以测试更广泛的受众。 我们需要您的帮助来确定这种想法是否值得进一步追求。 您可以在AppStore上免费下载: https://itunes.apple.com/app/id1153841944

如何在iPhone和Android上激活GuruWalk通知!

如果您想阅读西班牙语的帖子,请单击此处。 你好大师! 没有比差旅者在聚会地点等你的时候差的评论还不错。 这就是为什么我们实施了一种通知系统,当您收到旅行者,预订或取消的消息时,该通知系统可让您在手机上立即知道。 如果您使用的是Android系统,则只需在Internet浏览器(Chrome等)中输入GuruWalk。 您将很快看到一条横幅,邀请您单击以激活通知,因此您只需要单击接受即可! 要在iPhone上激活它们,则有所不同。 这就是为什么我们创建此手册来向您解释如何从您的电子邮件中逐步配置它们的原因。 我们走吧! 将GuruWalk保存为新联系人 首先要做的是添加“ GuruWalk”作为新的联系人姓名,并将info@guruwalk.com作为该联系人的电子邮件放在适当的字段中,如下所示: 联系人保存后,请输入您的电子邮件以进行下一步。 将GuruWalk添加到VIP列表中 在邮件的第一页,称为“邮箱”,您将看到一个带有蓝色星星的选项, 称为VIP ,单击该选项,然后按“添加VIP”按钮。 查找您先前保存的GuruWalk联系人,然后单击它。 该联系人将保存在您的VIP列表中。 然后,您将看到一个名为“ VIP通知”的按钮。 点击它。 现在,您可以选择通知在移动设备上的显示方式,例如:带有声音的横幅广告……我们强烈建议您激活“在锁屏上显示”选项。 这样,将更容易收到通知。 就是这样! 很简单,不是吗? 🙂 我们希望这项新功能可以让您更好地控制自己的预订。 在🙂下面留下评论,让我们知道您的意见 很快再见,以获取更多提示!

嘿,谢谢您的教程,因此我们也可以像您一样优化构建过程,但并非如此……

嘿,谢谢您的教程,因此我们也可以像您一样优化构建过程,但不适用于我。 如果您看看我在做什么错,我将不胜感激: 我使用en1而不是en0的原因是因为我在Wifi网络而不是以太网上进行测试。 这是错误: 确保以下各项: –节点服务器正在运行并且在同一网络上可用—从react-native根目录运行“ npm start” 在AppDelegate中正确设置了节点服务器URL 我可以看到该IP地址与“设置”->“网络”中显示的IP地址相同。 手机和计算机也使用相同的wifi网络。 先感谢您。

现代可可观点中的一项习题

最初发布在这里: https : //avaidyam.github.io/2018/03/22/Exercise-Modern-Cocoa-Views.html 就像我在上一个“片段”中所说的那样,最近,我想开始为Parrot添加“热键”支持,并且意识到我不喜欢任何现有解决方案: 使用MASShortcut尝试并证明可在ObjC-land工作的MASShortcut或ShortcutRecorder 。 使用新的但未经验证的Swift热键记录器(那里有一些)。 自己动手(可能以某种方式使用危险的专用SPI)而不进行任何测试! 显然,我选择了#3。 在这里,我们进入了激动人心的传奇的第二部分,您在其中见证了我打破AppKit和WindowServer并引起从事上述组件工作的工程师的愤怒和愤怒。 我希望你带了爆米花。 我想澄清一下,我们将只构建一个管理单个快捷方式的独立控件。 我希望Parrot与大多数应用程序一样,将不需要像Final Cut Pro这样的命令编辑器,该命令编辑器是专门为视频编辑器而专门设计的,该视频编辑器具有两个以上的键盘和两个以上的两只手可以匹配。 我们的最终结果将是看起来,听起来和感觉像这样,而不是: 在进入精妙的手工对编程之前,如果您想直接跳转到带注释的最终源代码,我将在此处提供一个快照。 这是整个最终产品,精确到1500 LOC,包括之前“ episode”中的代码-相应的键盘快捷键功能! 如果您认为这应该是正式的存储库而已,请通过Twitter或Github @avaidyam与我联系! 现代观点原理 子类化View或ViewController 我们应该回答的第一个问题是,我们要构建什么样的组件? 这个问题的答案是什么决定了我们是什么样的子类,以及我们与应用程序中其他组件的交互模型。 当您构建一个采用程序输入并向用户显示内容的分立组件时,对于控件而言,当您接收用户输入并显示程序输出时,您应该将View子类化。 除此之外的任何东西都应该是ViewController的子类,介导其他组件之间的交互的组件,或处理模型/数据库对象的组件,或者实际上只是其他任何东西。 View应该可以在您要立即构建的环境之外的其他环境中轻松重用,但是ViewController不一定能够履行此合同。 例如,联系人头像最好是View子类,但是联系人头像选择器应该是ViewController ,因为它不仅显示头像图像,而且还允许用户选择图像,并且可以处理与头像的同步。联系人存储(可能是JSON文件,可能是远程API,或者可能是CNContact )。 在macOS上,如果要构建的组件既包含其他组件(例如ViewController )又包含在Window ,则还应考虑将WindowController子类化-联系人头像选择器可能不符合此条件,但需要联系人编辑器面板联系人头像选择器将是一个ViewController嵌套在姓名,电话,电子邮件和其他可编辑字段旁边。 层数 虽然与年轻的兄弟姐妹UIKit相比, AppKit通常被视为恐龙,但重要的是要知道, UIKit所使用的几乎所有设计模式几乎都来自AppKit ,如果不是,它们最终会回到AppKit ,除了极少数。 例如,由底层CALayer类型支持的UIView的概念与由NSCell支持(而是过去?)的NSControl非常相似。 不同之处在于CALayer实际上是驱动显示内容的呈现而不是UIView的呈现,并且NSCell充当特定事件处理和绘制的“橡皮图章”。 当涉及到层支持的视图时, AppKit实际上有几种模式可以实现此目的: 层托管: self.layer = CALayer(); self.wantsLayer = true NSView拥有CALayer ,并负责创建和管理它。 […]