如何存储 Android 应用内计费的订阅数据?

Posted

技术标签:

【中文标题】如何存储 Android 应用内计费的订阅数据?【英文标题】:How to store subscription data for Android in-app billing? 【发布时间】:2012-08-29 12:28:00 【问题描述】:

我正在尝试实施应用内计费,我的应用销售的唯一内容是按月订阅。我几乎复制了 android 提供的 Dungeons 示例并且它可以工作,但对于我必须出售的一件东西来说它似乎过于复杂(而且我知道我不应该复制它)。

Dungeons 示例有一个 PurchaseDatabase 类,用于跟踪用户的所有购买。由于我的应用程序中只有一次购买,而不是拥有数据库,因此在我启动应用程序时使用 SharedPreference/boolean “isPurchased” 之类的东西并更新/检查似乎更有意义.. . 现在我对安全性知之甚少,但这似乎只是敲响了警钟,而且很可能很容易被破解。

那么,我应该如何存储/恢复这一数据?无论如何,我需要保存和跟踪什么?

编辑:找到这个 In-app billing. How to store information that user has paid? 。看起来我应该使用 SharedPreference,但这个问题仍然存在:我是只保存一个布尔值“isPurchased”还是应该跟踪 orderId、developerPayload 等?

【问题讨论】:

【参考方案1】:

如果您只是在共享首选项中保存一个标志,任何拥有根设备的用户都可以随意翻转标志并“订阅”而无需付费。所以你至少应该做一些混淆。这是一个sample way 来做这件事。此外,还有一个API 用于检查订阅状态,因此您应该定期检查以确保订阅有效。

【讨论】:

非常感谢!我整个上午都在研究 API,但由于 Google 没有提供任何代码示例,所以不太明白应该如何使用它......你能给我一个代码应该是什么样子的例子吗?跨度> 这里:code.google.com/p/google-api-java-client/wiki/… API 似乎过于复杂...我必须注册和下载 API,设置 OAuth,然后下载、设置和使用客户端库,或者学习 REST 并自己进行解析...所有这些只是为了找出一个值?这是您推荐的方法吗? 其实没那么复杂:一旦您进行身份验证,您发出一个 GET 并获得一个非常简单的 JSON 对象。没有其他方法可以进行在线检查,所以要么使用它,要么放弃在线检查。 怎么称呼用户购买?

以上是关于如何存储 Android 应用内计费的订阅数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中测试 Google Play 计费订阅(非应用内购买)

尝试订阅产品时需要应用内计费 android 返回身份验证

Android/Google Play:我真的需要我的 OWN 服务器来管理应用内计费订阅吗?

我们如何在服务器端验证 Android 应用内计费收据?

Android 应用内订阅测试

如何在 Android 上使用颤振测试应用订阅