iOS 在服务器上保存应用内购买

标签 ios swift in-app-purchase

我的应用程序遇到了一个大问题:我必须进行应用程序内购买(非续订订阅),并且我希望用户在删除应用程序并在设备上重新安装时检索他的订阅。我没有这个应用程序的帐户系统,所以很难。我想知道我是否仍然可以使用存储所有订阅的服务器,但我不知道如何为每个用户创建一个唯一的 ID,并在删除应用程序时检索它。我使用应用程序商店收据(包含所有购买)进行搜索,但是当我编写此代码来获取它时,它返回 nil :

let receiptUrl = NSBundle.mainBundle().appStoreReceiptURL
    var receipt: NSData
    do {
        receipt = try NSData(contentsOfURL: receiptUrl!, options: NSDataReadingOptions())
    } catch _ {
        receipt = NSData()
    }

    let receiptdata: NSString = receipt.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

    print(receiptdata)

感谢您的回答

最佳答案

实际上可以从收据中获取用户 DSPersonID(与 iTunes 帐户关联的唯一 ID),这里有一篇关于它的不错的博客文章:https://magervalp.github.io/2013/03/19/poking-around-in-masreceipts.html .

通过 DSPersonID,您可以唯一地识别 iTunes 用户。

警告这没有记录,并且将来完全有可能发生变化,使用它的风险由您自行承担。

关于iOS 在服务器上保存应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33778428/

相关文章:

ios - 在 Scenekit 中添加半透明图像作为纹理

ios - 如何在 info.plist 中打开隐私 VPN 配置

iphone - 在 App Purchase 用户取消 tx 而应用程序在后台 : tx state stays on purchasing

app-store - App Store验证收据后如何获取用户信息?

ios - 如何以编程方式找到 Swift 的版本?

iOS - 在 plist 文件中保存应用程序购买数据?

ios - 如何实现 initWithCString :(const char *)nullTerminatedCString ? 为什么大多数人使用 allocWithZone 而不是 alloc?

iphone - 在 iOS 6 的 TableView 中对数组进行排序

ios - iOS文字游戏框架

ios - 在 iOS 上用 swift 编写 XML