应用内订阅 - 可转让性
Apple 拒绝了我们的一款应用,用户可以通过订阅购买内容(InApp 产品类型为订阅)。问题是,我们需要,也是因为苹果的要求,这些订阅可以在设备之间转移。合乎逻辑且最安全的解决方案是将其链接到用户必须创建的用户帐户。
但这就是苹果拒绝这款应用的原因。他们告诉我们,购买订阅不需要注册,只能是可选的。所以问题是,如果没有其他好的解决方案,既有意义、安全又让用户感到舒适,如何解决这个问题?
Apple has rejected one of our apps, where the user can purchase content through subscriptions (InApp product type is subscription). The problem is that we need to, also because of Apple requiring it, these subscriptions to be transferable between devices. The logical and also the most secure solution would be to link it to a user account, that the user will have to create.
But this was the reason why apple rejected this app. They have told us that for purchasing of subscriptions a registration can not be required, can be only optional. So the question is how to solve this if there is no other nice solution that would make sense, be secure and still comfortable for the user?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
由于用户注册是可选,这意味着,如果用户选择不注册,则如果他们想为每台设备购买单独的订阅,则可以选择注册。只要您为用户提供了同步订阅的明确选项,Apple 就可以接受。
因此,您无需寻找其他方法来同步订阅。只保留现有的,但将其作为可选的。
为了进一步阅读,以下是我从一位苹果评论员那里收到的有关我被拒绝的消息的摘录:
Because the user registration is optional it means that, if the user opts not to register, than it's on them if they want to buy a separate subscription for each one of their devices. Apple is fine with this as long as you've given the user a clear option to sync their subscription.
So you don't need to search for some other method to sync subscriptions. Just stay with what you have but make it optional.
For further reading, here is an excerpt from a message I received from an Apple reviewer regarding my rejection:
好吧,那就让它成为可选的吧!只需以某种方式让您的用户知道未注册用户无法使用可转让性。
还可以考虑使用连接的 Apple 本身进行某种静默注册
Well, make it optional then! Just let somehow your users know that the transferability is not available to unregistered users.
Also consider making some sort of a silent registration using per se the connected Apple
为此使用设备标识符怎么样?当用户需要转移它时,他们可以创建新帐户并将这些购买转移到新帐户吗?
What about using the device identifier for this and when the user needs to transfer it, they can create new account and transfer these purchases to the new account?
男孩,这让我有点害怕。我有一个同时包含非消耗品和订阅的应用程序。订阅后,用户可以访问云帐户,在那里他们可以存储在 iPhone 上捕获的内容。在订阅创建过程中,他们在线创建一个帐户。他们注册的目的不是为了购买订阅,而是为了后续使用云存储。
这听起来像是苹果的问题吗?我不想走到这一步,发现我的整个商业模式因为他们的政策而被搞砸了。
Boy, this has me running a little scared. I have an app that has both non-consumables and subscriptions. The subscriptions give user access to a cloud account where they can store content captured on their iPhone. During the subscription creation process, they create an account online. It is not for the purpose of purchasing the subscription that they register, but for the subsequent use of the cloud storage.
Does this sound like it could be a problem with Apple? I'd hate to have come this far and find my entire business model is screwed because of their policies.
在我看来,这确实是苹果的一个设计错误。
他们应该做的事情如下:
要么
使
-restoreCompletedTransactions
返回用户过去的所有交易,无论类型如何,并让应用正确处理它们(对于订阅:检查originalTransaction
的transactionDate)
或
向
SKPaymentTransaction
添加一个属性,该属性唯一标识购买用户(不会泄露其个人信息),然后可以存储在应用服务器的审核日志中。幸运的是,他们认识到了自己的方式错误,并尝试使用新的自动续订订阅来纠正它们:事实上,在调用
-restoreCompletedTransactions
时,这些内容已包含在内,这也意味着服务器上的审核日志不会被删除。不再需要了。This, in my opinion, is really a design mistake on Apple’s part.
What they should have done is as follows:
Either
Make
-restoreCompletedTransactions
return all of the user’s past transactions no matter the type and let the app handle them correctly (for subscriptions: check theoriginalTransaction
’stransactionDate
)or
Add a property to
SKPaymentTransaction
which uniquely identifies the purchasing user (without giving away her personal information) and may then be stored on the app’s server’s audit log.Fortunately, they recognized the error of their ways and tried to rectify them with the new auto-renewable subscriptions: these are, in fact, included when calling
-restoreCompletedTransactions
which also means audit logs on the servers aren’t necessary anymore.这不是 SKPaymentQueue 上的
-restoreCompletedTransactions
的用途吗?http://developer.apple.com/库/ios/#documentation/StoreKit/Reference/SKPaymentQueue_Class/Reference/Reference.html
Isn't this what
-restoreCompletedTransactions
on the SKPaymentQueue is for?http://developer.apple.com/library/ios/#documentation/StoreKit/Reference/SKPaymentQueue_Class/Reference/Reference.html
应用内购买不与设备关联,而是与 iTunes 帐户关联。这样您就不需要为此单独注册。用户唯一困惑的问题是,他必须在第二台设备上单击“购买订阅”。然后他会收到消息“此订阅是免费的,因为您已经购买了”。类似的方法,就像在 AppStore 上一样 - 如果您想从 AppStore 重新安装您已经拥有的应用程序,您不会在 AppStore 应用程序列表中看到它 - 您会在那里看到价格标签,在选择“购买”后,您会看到“您可以免费使用”消息。
金德拉
InApp purchase is not linked with device, but with iTunes account. So that you don't need separate registration for this. The only confusing issue for user is, that he has to click on "buy subscription" on the second device. Then he will get message "this subscription is for free, because you already bought it". Similar approach, as on AppStore - if you want to reinstall app from AppStore, that you already have, you don't see it in AppStore Apps listing - you see price tag there and after you choose "purchase", you will get that "you have it for free" message.
Jindra