版本记录
版本号 | 时间 |
---|---|
V1.0 | 2019.01.24 星期四 |
前言
大家都知道,iOS虚拟商品如宝石、金币等都需要走内购,和苹果三七分成,如果这类商品不走内购那么上不去架或者上架以后被发现而被下架。最近有一个项目需要增加内购支付功能,所以最近又重新集成并整理了下,希望对大家有所帮助。感兴趣的可以参考上面几篇。
1. iOS内购IAP(一) —— 基础配置篇(一)
2. iOS内购IAP(二) —— 工程实践(一)
3. iOS内购IAP(三) —— 编程指南之关于内购(一)
4. iOS内购IAP(四) —— 编程指南之设计您的应用程序的产品(一)
5. iOS内购IAP(五) —— 编程指南之检索产品信息(一)
6. iOS内购IAP(六) —— 编程指南之请求支付(一)
7. iOS内购IAP(七) —— 编程指南之促进应用内购买(一)
8. iOS内购IAP(八) —— 编程指南之提供产品(一)
9. iOS内购IAP(九) —— 编程指南之处理订阅(一)
10. iOS内购IAP(十) —— 编程指南之恢复购买的产品(一)
11. iOS内购IAP(十一) —— 编程指南之准备App审核(一)
12. iOS内购IAP(十二) —— 一个详细的内购流程(一)
13. iOS内购IAP(十三) —— 一个详细的内购流程(二)
14. iOS内购IAP(十四) —— IAP的收据验证(一)
15. iOS内购IAP(十五) —— IAP的收据验证(二)
开始
首先看些写作环境
Swift 4.2, iOS 12, Xcode 10
在本教程中,您将学习如何向已提供自动续订订阅的应用添加介绍性定价选项。
假如,你有一个很棒的应用程序,提供了令人喜欢的,基于订阅的内容。 用户喜欢你的应用程序,无法理解他们没有它的生活方式。 问题是,即使有付费用户的好评,也很难让新用户直接下定决心订阅。
你能为这个做什么? 我很高兴你问!
Apple现在提供入门定价(Introductory Pricing)
以吸引新用户。
- 它适用于iOS 11.2或更高版本的用户。
- 添加到已经提供自动续订订阅的应用程序很容易。
使用介绍性定价,您可以在订阅开始时的有限时间内提供折扣价或免费试用。 听起来像这可能是你所有问题的解决方案,对吧?
在本教程中,您将学习如何向已提供自动续订订阅的应用添加介绍性定价选项。
要尝试这个很酷的新功能,您可以使用自己的应用程序已经提供自动续订订阅或使用这个Words of Wisdom by Winnie the Pooh
应用程序。 小心,小熊维尼引用很容易上瘾,所以谨慎使用这个应用程序。
如果您决定使用自己的应用程序,请跳至Introductory Pricing Types
。 如果您打算使用PoohWisdom
应用程序,请继续进行Setting up the Project
。
PoohWisdom
应用程序非常简单:它有一个带有小熊维尼图像的屏幕,一个用于在成功购买后显示引语的标签或一条鼓励用户购买的消息,以及两个按钮:Purchase
和Restore
。
该应用程序提供单一,可自动更新的订阅应用程序内购买或IAP。 接下来,您将学习如何为此IAP添加介绍性定价。
Setting up the Project
打开初始项目,然后构建并运行项目。 要使用该应用程序,您还需要设置自动续订订阅。 请执行下列操作:
- 1) 在Apple Developer Portal中创建
App ID
。 - 2) 使用所述App ID在App Store Connect中创建应用程序。
- 3) 创建IAP自动续订订阅产品:确保完成所有部分,包括审核信息
Review Information
。 将此图片(这个依据应用程序而定)用于评论屏幕截图。 一旦完成,状态应显示为准备提交(Ready to Submit)
。 - 4) 将您的
App ID
和Product ID
复制到易于访问的位置:接下来需要这些。 - 5) 创建沙箱用户以进行测试。 请记住使用真实的电子邮件地址,并通过单击Apple电子邮件中的链接来验证帐户。
注意:创建自动续订订阅时,
App Store Connect
会要求您定义订阅组(Subscription Group)
。 Apple在2016年推出了订阅组,作为解决订阅主要问题的一种方式。 订阅组允许用户修改其订阅而无需先取消订阅,并且可以防止意外同时订阅。订阅组实际上是订阅产品的集合,这些订阅产品在订阅管理菜单上组合在一起。 订阅组中只有一个产品可以在给定时间处于活动状态。 每个订阅组只能使用一次介绍价格
(introductory price)
。
好的,回到项目! 请执行下列操作:
- 1) 将
Bundle Identifier
设置为您创建的Bundle Identifier
。 - 2) 将常规
General
选项卡上的团队Team
切换到开发人员团队。 - 3) 搜索
com.razeware.poohWisdom.monthlySub
并将其替换为您创建的Product ID
。
构建并运行项目。 这是您应该在项目控制台中看到的内容:
Not purchased: $MyIAPID
Loaded list of products...
Found product: $MyIAPID $GroupID $Pricing
如果你看到这一点,那你就准备好了下一步! 如果没有,请确保您没有错过任何内容:
- 1) 是否在
App Store Connect
上正确设置了所有内容? - 2) 您的IAP产品是否显示为准备提交
(Ready to Submit)
? - 3) 您是否在常规选项卡上设置了
Team
和Bundle Identifier
? - 4) 您是否用自己的产品ID替换了
com.razeware.poohWisdom.monthlySub
?
如果其他一切看起来都正确并且您仍然没有收到产品,请确保您不需要接受App Store Connect
中的任何协议。 令人困惑的是,如果您有未完成的协议,Apple可能会为IAP产品返回空的响应,而不是失败。
暂时不要点按Purchase
!
如果您已完成购买,那没关系。 毕竟,我们都是人。但是,遗憾的是,您需要在App Store Connect中创建另一个沙盒用户。
Introductory Pricing Types
每个周期可以为每个订阅提供三种类型的介绍性定价:
- Pay as you go(SKProductDiscount.PaymentMode.payAsYouGo):新订户将在特定时间段内为每个结算周期支付折扣价。这可以吸引对您的应用感兴趣的新用户,但需要额外推动以在每个订阅期间支付正常的更高价格。
例如,您可以提供三个月每月1.99美元的折扣价,从第四个月开始每月标准订阅价为3.99美元。
- Pay up front(SKProductDiscount.PaymentMode.payUpFront):新订户将在特定时间内支付一次性入门价格。当您认为用户可能需要更长时间才能吸引应用提供的内容时,此功能非常有用。
例如,如果您想提供每月订阅,但您认为用户需要大约六个月的时间来适应体验并且更有可能保留订阅,您可以提供6个月的入门价格9.99美元,然后是从第七个月开始每月3.99美元的标准价格。
请注意,您不必使用与介绍价格和常规订阅相同的时间长度。因此,例如,您可以提供六个月的介绍价格,然后是年度订阅。
- Free trial(SKProductDiscount.PaymentMode.freeTrial):新订阅者可以在特定时间内免费访问您应用的内容。订阅立即开始,并且在免费试用期结束后进行第一次结算。
这样,您的用户就可以在第一次结算之前取消选项。如果您对自己的应用提供的内容充满信心,但难以说服潜在的订阅者,花钱订阅是值得的,这是一个让他们自己决定的低风险选项。
无论您选择使用哪种类型,一旦介绍期结束,订阅将以正常价格续订。
Determining User Eligibility
在向用户显示折扣价之前,您必须确保特定的当前用户符合折扣价格。
您如何知道用户是否符合条件?好问题!
查看用户过去的交易,看看他们过去是否已使用同一订阅组的折扣。如果是这样,则用户没有资格享受折扣价。
免责声明:本教程的示例应用程序不执行收据验证。相反,它会将产品的购买状态保存在
NSUserDefaults
中。在现实生活中的应用程序中,您应该执行某种收据验证,以确保购买发生并且钱转手。 Apple建议您在自己的服务器上执行此操作,但有一些方法可以在本地执行此操作。您可以在Apple’s documentation中阅读有关收据验证的更多信息。
您不是专注于本教程中的收据验证,而是要在您的服务器上实现上述说明,您在
App Store
服务器的JSON
响应中需要的字段是:latest_receipt_info
,其值是包含所有应用内购买的数组事务,以及每个相关交易的收据receipt
字段中的is_trial_period
和is_in_intro_offer_period
字段。
要确定用户的资格,请检查所有IAP交易的订购试用期(Subscription Trial Period)
和订购初始价格期(Subscription Introductory Price Period)
的值。如果给定订阅的任一这些字段的值为true
,则该用户不符合同一订阅组中任何产品的介绍价格。
新用户始终有资格获得所提供的入门价格,而失效用户(过去曾订阅过的用户)只有在尚未使用此订阅或其他同类产品的情况下才有资格获得介绍价格。
Offering Introductory Pricing to Eligible Users
好的,所以现在你要为你的IAP添加一个介绍价格。 好极了!
在App Store Connect上,转到My Apps
,然后选择要添加介绍价格的应用程序。 然后,转到Features ▸ In-App Purchases
并选择正确的自动续订订阅。
然后,按下Subscription Prices
旁边的+
,然后选择Set Up Introductory Price
。
现在,您需要选择适用新介绍价格的地区。 默认情况下,将选择所有地区。 出于本教程的目的,并允许您在下一部分中测试各种成功和失败状态,请取消选择All Territories
并仅选择United States
,如下图所示。
按Next
。 现在,您需要为新的介绍价格设置开始日期和结束日期。 选择今天的日期作为开始日期和选择No End Date
作为结束日期,然后按Next
。
选择Free trial
并将持续时间设置为3天。 这意味着您的用户可以在开始支付标准订阅价格之前三天免费访问您应用的内容。 按Done
,然后按右上角的Save
。
您刚刚为自动续订订阅设置了入门价格。 我们将在一分钟内讨论介绍性定价的用户体验影响,但从技术上讲,您已经完成了所有工作。 下面准备好测试这个新功能。
Testing
现在一切都已设置好,你应该测试一下。 还记得您之前创建的沙箱用户吗? 现在是时候使用它了! 请注意,虽然您可以在模拟器上获取可用IAP列表,但要测试实际购买,您需要一个物理设备。
在您的设备上运行该应用,点击Purchase
,您将看到此提醒:
输入尚未购买此订阅的沙箱帐户的详细信息,然后点按Continue
。
注意:从
iOS 12
开始,登录沙盒帐户时不再需要退出生产帐户! 它现在是“设置”应用的iTunes & App Store
选项中的单独项目。 这是一个巨大的进步,特别是在测试自动续订订阅时。
您现在应该看到此alert:
一旦你点击OK,你就会得到小熊维尼的随意智慧词:“If you live to be a hundred, I want to live to be a hundred minus one day so I never have to live without you”
,这就是一个 聪明的熊。
您还应检查导致事务失败的一些流。 例如,从设备卸载应用程序,重新安装它,并尝试使用相同的沙箱用户购买相同的订阅。 由于此用户过去购买了该项目,因此您应该收到此警报,然后是失败消息:
现在,再次卸载并重新安装应用程序,并尝试使用相同的沙箱用户还原IAP。在这种情况下,您将获得相同的alert
,但随后将成功恢复。
在生产应用程序中,一旦您意识到用户过去已购买它,您应该立即尝试恢复购买。至少,为用户提供良好的后备显示,以便清除当前状态。在这个示例应用程序中,我们保持简单,以便您可以轻松检查失败状态。
您可以通过选择iTunes & App Stores
,在设备的“设置”中查看您当前登录的沙盒用户。在那里,您将在顶部看到您的真实帐户,在底部看到当前的沙盒帐户。
此外,您应该测试不同的场景。考虑一个用户:
- 尝试在您未提供介绍性定价的国家/地区购买订阅。
- 已经使用了入门价格并尝试再次购买同一产品。
- 未使用您正在测试的特定产品的介绍价格,但已将其用于属于同一订阅组的其他产品。
- 已使用不同订阅组中产品的介绍价格,并且仍有资格获得所测试订阅的介绍价格。
Introductory Pricing Best Practices
要将Introductory Pricing
添加到已具有自动续订订阅的应用程序,您不必对代码进行任何更改。您可以在App Store Connect
中进行相关更改,让Apple
负责其余部分。但是,如果您真的想要充分利用这种吸引用户订阅的新方式,您可能需要进行一些UI / UX
更改,以确保潜在买家了解您的应用提供的介绍价格。
Apple Human Interface Guidelines about In-App Purchase明确指出:“在提供介绍价格时,请说明介绍价格,优惠期限以及用户在优惠结束后支付的标准价格。”
在向App Store中已有的应用添加介绍价格时,请考虑以下几点:
- 确保您的用户了解该产品。以清晰且吸引人的方式显示折扣价,以便用户确切知道他们正在购买什么。您可以在添加到
SKProduct
的新属性中获取所需的所有详细信息,名为introductionctoryPrice
(类型为SKProductDiscount)。此数据包括:price,priceLocale,paymentMode,subscriptionPeriod和numberOfPeriods
。 - 不要向用户承诺在他们已经开始购买过程后发现他们没有资格获得介绍性价格。尽早确定资格,以便将显示与用户的具体情况相匹配。
- 促销IAP的介绍价格也出现在App Store上。在决定如何使用此功能时,请记住潜在用户可以在安装应用之前查看折扣。如果使用得当,介绍性价格可以吸引新用户安装您的应用并将现有用户转换为新订阅用户。
- 用户现在可以通过此链接apps.apple.com/account/subscriptions轻松查看和管理他们的订阅。在那里,他们可以看到他们的订阅并在订阅组中的不同选项之间切换。检查您的IAP产品在那里的外观并在相关时指导您的用户非常重要。
- 最后,Apple在
App Store Connect ▸ App Analytics
中添加了新的订阅保留仪表板。应用程序启动后,请关注保留仪表板的趋势。请注意介绍性价格如何改善用户获取并使用此数据来决定应用程序的未来产品和业务模型。
我强烈建议您查看Apple的Introductory Pricing Documentation和WWDC 2018中的Best Practices and What’s New with In-App Purchases。
此外,请务必查看Apple的收据验证文档(Receipt Validation documentation),了解有关如何验证收据的更多详细信息。 这对于确定用户是否有资格获得介绍价格是必要的。
介绍定价是您的IAP工具箱的一个很好的补充,可以帮助您吸引新订阅者。
与其他类型的IAP一样,不要忘记Apple的指导原则 - 允许用户恢复购买,优雅地失败并提供出色的用户体验,即使对于不合格的用户也是如此。 只要您在设计和开发应用时牢记用户,您和您的用户都将从中受益。
后记
本篇主要讲述了添加介绍性定价选项,感兴趣的给个赞或者关注~~~