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。 您还必须创建自定义UI来更新付款和取消订阅。

IAP:您将只负责UI解释购买选项。 StoreKit框架和系统将接管并显示用于订阅购买或更改的标准UIAlerts。 用户将只能通过iTunes商店取消订阅。

解锁内容

订阅的主要目的是解锁某种内容。 您有可能在数据库记录中维护用户的订阅状态。

条带:您的用户输入他们的付款信息将生成一个令牌,您可以将该令牌发送到您的服务器。 您的服务器将使用此令牌创建Stripe客户对象并将其订阅计划。 您的服务器应用程序将通过Webhooks接收有关付款成功,失败,卡过期和其他事件的通知。 您可以在收到这些事件后更新与用户订阅相关的状态。

IAP:购买订阅后,您将必须向系统索要收据。 该收据是加密的二进制数据。 您可以将该数据发送到服务器,该服务器应存储该数据并将其与用户关联(它实际上将充当令牌)。 该收据可以随时发送到Apple的服务器,Apple会返回有关用户订阅状态的最新解密的JSON。 您可以基于此返回的JSON更新与用户订阅相关的状态。 苹果公司最近还开始提供webhook(称为状态更新通知),以便可以向您通知某些事件(不如Stripe的webhook强大)。

测试中

Stripe:完整的测试环境,可为您提供各种模拟付款凭证。 您只需使用测试凭据即可几乎轻松地测试几乎所有方案。

IAP:测试非常受限。 您必须使用有效的电子邮件地址创建一个沙盒iTunes用户,并且绝不能登录任何生产环境或冒使沙盒帐户无效的风险。 您无法测试取消订阅的行为,因为您无法登录生产iTunes帐户,并且没有用于取消或更新测试订阅的沙箱帐户。

多平台支持

Stripe: Stripe是为此而构建的,您的Web和android应用程序也可以使用Stripe,因此可以完全共享界面和订阅状态。

IAP:无,您可能必须将IAP(针对您的iOS应用)和其他付款处理服务混合用于其他平台。 您将必须创建一种合并数据库中订阅状态的方法。

仪表板

条纹:具有许多功能和设置的综合Web仪表板。 完全控制单个订阅(退款,取消等)。 动态控制订阅计划,客户服务,分析集成等。

IAP:无。 iTunes Connect中对用户群的总体订阅进行了一些新的可视化表示,但是没有交互式仪表板可以为您提供对所提供的订阅或当前订阅者的动态控制。


很明显,Stripe是两者中最好的选择(公平地说,他们的整个公司都基于这样的最佳解决方案)。 真正的问题是我们可能对此没有选择。 苹果似乎正在主动改善他们的汽车可再生订阅服务,但是(在我看来)它在“享受合作”方面仍然落后于Stripe。 他们正在努力改善自己的服务真是太好了。 毕竟,当您无处可去订阅时,他们并没有必要提供非常有竞争力的选择


仅此而已,请继续鼓掌,并继续关注如何实现两种不同的可再生订阅服务的任何代码示例!