- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的问题主要围绕使用 Google 的应用内结算 API 处理应用内消费品购买。 ( https://developer.android.com/google/play/billing/api.html#consumetypes )
他们的文档将消耗品描述为:
Consumable products
In contrast, you can implement consumption for products that can be made available for purchase multiple times. Typically, these products provide certain temporary effects. For example, the user's in-game character might gain life points or gain extra gold coins in their inventory. Dispensing the benefits or effects of the purchased product in your application is called provisioning the managed product. You are responsible for controlling and tracking how managed products are provisioned to the users.
消耗品是可以多次购买的东西(例如游戏货币、游戏内元素或使用的升级等),而非消耗品只能购买一次(无广告、皮肤/角色等)
在关于消费购买的文档 ( https://developer.android.com/training/play-billing-library/purchase-iab-products.html ) 中,它还提到:
How you use the consumption mechanism in your app is up to you. Typically, you would implement consumption for products with temporary benefits that users may want to purchase multiple times, such as in-game currency or replenishable game tokens. You would typically not want to implement consumption for products that are purchased once and provide a permanent effect, such as a premium upgrade.
It's your responsibility to control and track how the in-app product is provisioned to the user. For example, if the user purchased in-game currency, you should update the player's inventory with the amount of currency purchased.
我的问题是如何跟踪消耗品的用户库存?文档和各种视频似乎很快就掩盖了这一点,基本上是说应用程序必须在获得成功购买确认后应用消耗品的效果。但这并不是真正的全貌。如果用户注销并使用其他帐户重新登录怎么办?或者他们换了一部新手机,他们应该在该手机上安装该产品。
您无法真正将购买记录保存在 SharedPreferences 或永久缓存中,因为它与手机相关联。如果用户在不同的手机上登录,那么他们应该享受他们所做的所有购买的好处。
举个例子:
游戏开始时玩家有 1000 金币。玩家通过应用内购买再购买 500 金币,然后花费 200 金币。如果玩家购买新手机并在该手机上安装该应用程序,他们应该有 1300 金币。
这通常是如何完成的?
您是否需要独立于 Google 运行私有(private)服务器来跟踪此类商品的购买/消费情况?
谢谢!!
最佳答案
我正在自己实现应用内购买。
Do you need to run a private server that keeps track of purchases/consumption of such things separate from Google?
当然可以,正如 Google 在 Security Best Practices 中所建议的那样
It's highly recommended to validate purchase details on a server that you trust. If you cannot use a server, however, it's still possible to validate these details within your app on a device.
你的第二个问题
What if a user signs out and signs back in with a different account?
将 orderId
绑定(bind)到帐户或设备。在第一种情况下,您可以在用户切换设备时轻松管理购买(获得私有(private)服务器的另一个原因)。而在第二种情况下,您可以允许在同一台设备上切换帐户。因此,选择哪一个取决于您。
您需要将本地消费同步到服务器。
这是验证购买的流程:
- User clicks “BUY” button.
- Makes payment with google.
- App receives “receipt” from google and store it locally
- Send this “RECEIPT” to the Server.
- The Server sends the “purchaseToken” to Google Play Developer API for validation
- The Google Play Developer API sends response with status code.
- Store the RECEIPT in the server database (If we you to keep history of purchases by users).
这是使用产品的流程:
- The user opens the app.
- App assigns values to the Resources by reading from local storage.
- App tries to synchronize with the Server.(checks last updated timestamp)
Different scenarios:
Synchronization Successful: Assigns Resource values from the server. Set newly retrieved values in the local storage.
Synchronization Failed: Keep Resource values and try again.
- User consumes the Resource.
- App updates local values in Resource and sync with the server.(checks last updated timestamp)
我使用了以下文章:
关于java - 跨 session /设备处理应用内购买/消耗品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49344238/
这是一个 Cocoa 应用内购买问题。 我有一款游戏,您可以购买一组 10 条生命,这是一种消耗品应用内购买 - 一旦生命用完,用户必须购买更多生命。 如果用户使用生命的子集(例如 5),然后删除应用
我正在我的应用程序中实现应用内购买。根据要求,每次我在应用程序中按下“购买”按钮时,应该购买产品。 在 itunesconnect 网站上,我的产品属于哪一类? 消耗品或非消耗品。 我对选择类别感到困
在我的实时应用程序上,用户不断收到有关消费品的错误消息。这是非常随机的错误,很少发生。 此应用内购买已被购买。它将免费恢复。 在我的应用程序中,除非应用程序购买过程完成,否则我阻止用户点击“立即购买”
我的问题主要围绕使用 Google 的应用内结算 API 处理应用内消费品购买。 ( https://developer.android.com/google/play/billing/api.htm
我对应用内购买的特定情况有疑问。 我们在我们的应用程序中有一个用于购买硬币的消耗品: 使用 IAP 购买 0.99 美元的硬币包 我们向我们的服务器发送请求以记录购买并将硬币添加到他们的帐户(这些硬币
是否可以通过 Windows 应用商店购买以下项目作为应用内购买? 插件 消耗品(一次性使用) 订阅 我在哪里可以找到有关如何在应用内购买中为插件、消耗品、订阅编码的资源? 是的,我曾尝试使用谷歌搜索
我是一名优秀的程序员,十分优秀!