iPhone 应用内购买订阅需要支付续订费用吗?
我正在开发一个应用程序,用户可以在其中订阅特定时间段内使用的功能。 订阅期会在我们自己的服务器上进行验证,在此之后用户需要购买新的订阅。
现在我对苹果的警报感到困惑:在“你想买一个......”警报之后,又出现了另一个警报,上面注明用户已经支付了订阅费用,并且他是否想续订!
这真的会导致新的付款吗?
I'm developing an app in which the user could subscribe for a feature to use for a specified period.
The subscription period gets verified on our own server and after this time the user needs to buy a new subscription.
Now I am confused about the alert from Apple: After the "Do you want to buy one ..."-alert there comes another one with the note that the user already had paid for the subscription and if he wants to renew!
Does this REALLY leads to a new payment?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Apple 要求您提供自己的购买 UI,可以是类似 AppStore 的东西,也可以是警报。用户向您确认购买后,您的应用程序会提交 SKPayment,这将导致 SDK 验证用户的商店身份和他们支付的金额(我相信这是您提到的第二个对话框)。
每当用户通过 iTunes 给您钱时,就会在某处出现 iTunes 对话框。苹果不希望开发者跳过这一步,从毫无戒心的用户那里得到免费的钱。解决方案是围绕它进行设计:您知道对话框即将到来,因此不要先给用户提供多余的对话框。许多应用程序使用带有“购买”按钮的信息页面来解决这个问题 - 他们将看到一个购买信息页面,按下一个按钮,然后获取 Apple SDK,而不是连续两个购买对话框购买对话框。
如果您想要订阅服务,则需要在 iTunes Connect 中将该项目设置为订阅,而不是消费品或非消费品。创建 IAP 项目后,您无法更改其类型,因此请在创建时正确选择。订阅不像消费品一样处理,尽管它们基本上只是基于时间的消费品。 Apple 强制使用不同的措辞来告知用户,一种措辞在特定日期到期,另一种措辞在某些非时间资源用完后到期。
您需要在自己的服务器上跟踪订阅购买情况(以检查收据并消除盗版),并且您的应用程序应在正确的时间提示续订。就应用程序商店而言,续订订阅就是重新购买订阅,因此,是的,您会看到 SDK 向用户弹出一些对话框,要求他们验证购买情况。目前也没有“自动续订订阅”选项。这些原因就是许多开发者提供多月订阅的原因。
You are required by Apple to present your own purchase UI, either something AppStore-like or an alert. After the user confirms the purchase to you, your app submits the SKPayment, which will cause the SDK to verify the user's store identity and the amount they're paying (which I believe is the second dialog that you are referring to).
Any time a user gives you money through iTunes, there will be an iTunes dialog somewhere. Apple doesn't want developers to skip that step and get free money from unsuspecting users. The solution is to design around it: you know the dialog is coming, so don't give the user a redundant dialog first. Many apps use info pages with "buy" buttons to get around that - instead of two purchase dialogs back to back, they'll see one purchase-info page, press a button, then get the Apple SDK purchase dialog.
If you want a subscription service, then you need to set the item up in iTunes Connect as a subscription, not a consumable or non-consumable item. Once you create an IAP item you cannot change its type, so choose correctly at creation time. Subscriptions aren't handled like consumables even though they are basically just time-based consumables. Apple enforces the different wording to communicate to the user that one expires at a certain date, the other expires after some non-time resource is used up.
You will need to track the subscription purchase on your own servers (to check receipts and eliminate piracy), and your apps should prompt for a renewal at the right time. As far as the app store is concerned, renewing a subscription is purchasing the subscription all over again, so, yes, you'll see the SDK throw up some dialogs at the user asking them to verify their purchase. There's currently no "auto-renewing subscription" option, either. These reasons are why many developers offer multi-month subscriptions.
您可以在沙盒中测试所有应用内购买 (IAP) 内容,但不会导致实际付款。
此外,您的应用程序处理各种交易的方式决定了“您想购买...”对话框何时出现。
显然,一旦用户购买了订阅,您应该保存该订阅(阅读:NSUserDefaults),并且如果全部付款,则不要发出“您想购买吗”警报。
如果这不能回答您的问题,也许可以问一些更具体的问题。特别是,您执行 IAP 相关代码会触发“您想购买吗?”警报;因此,您必须根据您对用户订阅付款的了解来执行/不执行此操作。
You can test all the in-app-purchase (IAP) stuff in a sandbox that doesn't result in actual payments.
Also, how your app handles the various transaction determines when the "Do you want to buy..." dialog appears.
Obviously, once the user purchases a subscription, you should save that (read: NSUserDefaults), and not put up the "Do you want to buy" alert if they're all paid up.
If this doesn't answer your question, perhaps ask something more specific. In particular, it is your execution of IAP-related code that triggers the "Do you want to buy?" alert; so you have to do/not-do that based on your knowledge of the user's subscription payment.
您似乎期望 Apple Store 知道用户订阅何时过期。事实并非如此。因此,你的应用程序可以随时续订,甚至每 1 分钟续订一次,如果你愿意的话,Apple Store 只会认为这是有效的续订。您的应用程序(或者可能是您的服务器)必须进行记账,验证用户最后一次成功的订阅交易是多久前的事,如果不够快,则跳过订阅付款交易。
You seem to expect that Apple Store knows when user subscription is expired. It does not. Your application can therefore renew subscriptions anytime, even every 1 minute, if you want to, Apple Store just considers this to be valid renewal. Your application (or probably your server) has to do the accounting, verify how long ago was the last successful subscription transaction of the user, and if it was not soon enough, then just skip subscription payment transaction.