应用程序的逻辑。 您使用登录密码注册。然后,如果您没有订阅(由服务器检查),请转到“购买订阅页面”。
问题。 我注册了user1。买订阅。 token1进入服务器。 我注册了user2。由于他没有订阅,他进入“购买订阅页面”,点击“购买”,苹果说“你已经买了订阅”并给出了token2(为什么它会给出不同的令牌?)
var receiptUrl = NSData.FromUrl(NSBundle.MainBundle.AppStoreReceiptUrl);
return receiptUrl.GetBase64EncodedString(NSDataBase64EncodingOptions.None);
token2转到服务器。因此,我们有1个购买订阅,但有2个用户使用相同的订阅。 有没有办法识别用户的iTunes?保存令牌,并能够检查itunes用户是否已经为某个服务器端帐户购买了订阅
答案 0 :(得分:1)
这是StoreKit收据中的一个基本问题,我认为大多数开发人员都没有意识到这一点。
问题在于Apple没有为开发人员提供识别收据属于哪个iTunes帐户的方法。这使得用户与其他用户共享iTunes凭据并解锁订阅变得微不足道。
处理此问题的正确方法是在数据库中存储Apple transaction_id
响应中的实际verifyReceipt
,并确保它在您的数据库中是唯一的。这是很多工作,所以可能不值得。
有时,您希望iTunes帐户可以与不同的应用程序端帐户一起使用,这使事情变得更加复杂。例如,如果用户创建帐户并购买订阅,则允许订阅过期,然后稍后创建新帐户并尝试再次购买,即使多个帐户现在正在使用相同的收据,也应该允许该帐户。
如果您不想处理它,I have a service会自动处理所有这些边缘情况。