Tag: 应用程序购买中的

iOS可更新订阅概述:条带与应用程序内购买

在iOS应用程序中实现购买的两种常见方法是使用Stripe或Apple的应用程序内购买(IAP)。 这既适用于自动续订订阅,也适用于一次性购买,本文将重点介绍可续订订阅。 条纹:每成功刷卡一次,费用为2.9%+ $ 0.30 IAP:每笔费用的30.0% (每位订户成功进行一年定期付款后降低到每笔费用的15.0% ) 两者的最佳选择是显而易见的。 但是,仅因为您可以使用Stripe或IAP并不意味着您的应用程序将超过Apple的审查程序。 我们正在与换手的钱打交道,因此,如果苹果想要减薪,请不要感到惊讶。 考虑到他们已经构建了可以进行这些购买的生态系统,他们对此有强烈的感觉。 问题是,何时允许您偏离IAP? 您何时必须偏离IAP? 这里的一般规则是,如果您在“应用程序外”出售商品或服务,则必须使用IAP以外的其他支付服务(例如Stripe)。 如果您在应用程序/设备本身(也称为“数字商品”)中提供了出售给用户的所有商品,则您必须使用IAP。 IAP示例 您正在建立运动和卡路里追踪器。 您有一个简单的免费版本,但有一个更为复杂的高级版本。 您打算让您的用户订阅自动续订的每月付款,以使用高级版本。 由于您的应用程序正在提供“数字商品”(也许您使用了HealthKit框架和一些新颖的机器学习技术来分析用户数据并提出建议),因此您必须使用IAP。 条纹示例 您正在构建一个时尚/服装应用程序,您的用户可以在其中订阅一项服务,该服务每月都会根据其大小和喜好为他们量身定制一件新衣服。 由于您出售的是应用程序/设备之外的真实商品和服务,因此您必须使用IAP以外的其他东西(Stripe是一个很好的解决方案)。 灰色地带 总有辩论的余地,但是请记住,苹果拥有最终决定权。 无论您是否相信可以避免使用IAP,都无法决定您的应用程序是否会到达Appstore。 如果您不喜欢它,可以带上您的产品,然后去找自己的另一个Appstore。 可以通过Spotify找到一个很好的例子来尝试降低IAP的高昂成本。 即使Spotify为您提供了真实艺术家的音频内容,但从技术上讲,它仍然是通过应用程序/设备提供的数字内容。 如果您曾经订阅过高级服务,则可能已经注意到规则的这个简化。 还记得尝试获得该订阅的任何磨擦吗? 如果您查看该应用程序,将会发现您无法在iOS应用程序上注册高级服务,您必须访问其网站(我想是免费的)……甚至没有链接。应用中的相应页面。 为了避免30%的高额费用,Spotify愿意在付款流程中遇到一些严重的摩擦。 我敢打赌,Spotify必须做一些严肃的法律体操活动,并且一直在与苹果进行过无数次谈判,以确保确实如此。 您可能会发现自己处在使用“现实世界”商品和服务的应用案例值得商 。的情况下。 假设您有一个应用程序,如果用户订阅了该应用程序,他们将每月从他们所选择的名人那里接到电话,以进行简短的对话(与我一起在这里生活,这个例子只是为了论证)。 这个应用程式有涉及产品的真实人物,但商品仍然是数字化的。 在这种情况下,您应该联系Apple。 以我的经验,他们可能无法给您一个简单的答案,您可能需要等到Appstore审查。 在这种情况下,我认为最好在应用程序的不同版本中同时实现IAP和Stripe,以便您对他们的游戏时间决定做出反应。 我将假设任何尝试实现自动更新订阅的iOS应用都有一定程度的优势 强大的服务器组件 ,可能是多平台应用程序 (Web应用程序,Android应用程序等)。 我还将假设您的应用程序具有一些用户和身份验证的概念。 如果您要为不具有服务器组件的应用程序进行自动可续订(所有内容均已在应用程序本身中解锁),则您肯定会使用IAP,属于少数群体,并且可能希望考虑其他收款方式(付费应用,不可续订的订阅等)。 您仍然可以使用IAP自动续订(我个人不会),但是我接下来要说的大部分内容都不适用于您。 以下是在不同关注领域中使用Stripe和IAP进行可更新订阅的区别。 UI / UX Stripe:您可以混合使用Stripe UI元素(例如付款信息集合ViewControllers)和所需的任何自定义UI。 […]

使用SKProduct测试Swift代码

故事 旧的可信赖的源代码-很好,它可以正常运行很多年。 是的,只有很少的无法解释的方法,没有人记得这是什么以及拥有它们的原因是什么。 还是那是一个错误修复程序? 与其保持原样,而且完全不要触摸它。 上周,我不得不重构一个古董应用程序内购买经理—用Objective-C编写的应用程序非常尊重您的要求,60%包含单元测试。 为了减少任务的繁琐性,我为自己找到了另外一个动机–不仅重构了旧代码,而且还用Swift重新编写了代码。 现在,这项任务听起来更具吸引力。 问题 如果您对主题非常了解(Apple应用程序内购买),那么编写具有基本功能的应用程序内购买经理(控制器/帮助者/其他)很容易: –从AppStore检索产品信息(标题,描述,价格等) –在App Store上购买产品 – 恢复购买。 我跳过了有关购买的冗长的基本解释,直接解决了这个问题:以前的Objective-C实现具有良好的单元测试范围。 OSMock框架实际上可以模拟所有内容,包括必要时的系统类。 例如,以下代码创建一个SKProduct类的模拟,并为productIdentifier方法创建一个存根: 静态NSString * productIdentifier = @“ com.test.identifier”; id产品= [OCMockObject mockForClass:[SKProduct类]]; [[[product stub] andReturn:productIdentifier] productIdentifier]; 再举一个例子,下面的代码允许我测试价格处理: id产品= [OCMockObject mockForClass:[SKProduct类]]; NSDecimalNumber * price = [NSDecimalNumber decimalNumberWithString:@” 1“]; [[[产品存根]和退货:价格]价格]; NSLocale * locale = [NSLocale localeWithLocaleIdentifier:@” en_US”]; [[[产品存根]和Return:locale] priceLocale]; 新代码应在Swift中。 此代码也必须是可测试的。 如何在Swift中模拟SKProduct类? […]