我正在考虑将我最受欢迎的WP7游戏移植到Android上。我想做的是免费提供它,但在大约5分钟的播放时间之后,下载器唯一的选择是购买应用以完全解锁游戏。但是,我发现在Managed Purchases环境中IAB的官方Android SDK有一个“Restore_Transactions”可用,但它没有说我可以在每次发布游戏时使用它。 http://developer.android.com/guide/market/billing/billing_overview.html
所以,问题是,我如何/在哪里/什么格式存储用户解锁游戏而不在每次游戏发布时调用“Restore_Transactions”的事实?
答案 0 :(得分:4)
作为开发人员,您负责恢复托管购买类型的已购买交易。示例Dungeons应用程序在应用启动时查询托管用户购买。我不认为需要网络访问才能查询市场内的应用内购买,因为它会向内部市场数据库查询身份验证。
有关详情,请在Dungeons.java
.....
/**
* Reads the set of purchased items from the database in a background thread
* and then adds those items to the set of owned items in the main UI
* thread.
*/
private void doInitializeOwnedItems() {
.....
并完整阅读以下内容:http://developer.android.com/guide/market/billing/billing_admin.html
答案 1 :(得分:0)
在您的Android市场的发布商页面中。您可以将应用内购买项目设置为“托管购买”。这意味着Android市场将保留用户购买此商品的记录。
因此,如果您在加载时查询Android市场,它将返回您的“RESTORE_TRANSACTION”状态,并且您知道用户已购买此项目。
正如您的问题不这样做:
您可以将其存储在手机上的数据库中(可以通过root手机轻松破解)。
您可以将其加密存储在手机上的多个表格中的数据库中(如果用户卸载,则可能会丢失,而且会丢失)。
您可以在手机上存储用户参考,数据库存储在您自己的安全服务器上(类似于安装日期和SecureRandom()下载的IMEI编号.nextLong())。
或
正如您所说,您不想这样做,您可以存储原始购买,然后查询InApp结算服务。
引自谷歌文档:
如果您有远程服务器,我们建议您将购买信息存储在服务器上,而不是存储在设备上的本地数据库中
进一步阅读: InApp Security & Design