问题描述
很抱歉,如果有人问过这个问题,但我进行了搜索并找不到任何东西。这可能是我表达它的方式。
所以我在 Unity 中制作了一个带有应用内购买的手机游戏。我已经成功地做到了这一点,它将拿走我的钱并告诉我我买了什么。但是我现在缺乏知识的地方是如何将这笔钱返还给玩家。例如,您为 10 个硬币支付 0.99 美元,现在我想向玩家展示这 10 个硬币。是否有我可以执行的服务器处理的 API 调用以显示他们的 10 个硬币?如果不是,我是否会在使用 PlayerPrefs 或二进制保存的代码中处理它?感谢您阅读本文,非常感谢您的帮助。
解决方法
如果其他人有同样的问题,这里有一个更具体的答案。
Google 应用内购买不会存储您的应用内购买。它们仅存储各种数据,例如Product Name
、Product description
、Product ID
、Product Price
、Last Updated
和Status
。所有这些数据都可以在 Google Play Console
标签下的 In-app products
中编辑。
使用 Unity IAP,您可以轻松集成许多商店购买功能,例如 Google。在正确设置您的应用程序使其至少在 Alpha Stage
发布后,它已经过 Google 验证,您已经设置了一个 Monetization account
并且您已经上传了一个带有 {{1} },您将能够添加应用内购买产品。
在控制台中设置产品后,您可以按照 Unity 的教程开始实施 IAP。当用户确实购买了产品时,将会有关于他们购买的商品的 billing permissions
的回调。
在购买产品时,有多种类型的产品,但在这篇文章中,我只会谈论 Product ID
和 Consumable
购买(其他都是基于订阅的)。 Non-Consumable
产品是购买后可消费并可回购的产品。将它们视为游戏中可以耗尽的宝石、能量或其他资源。 Consumable
产品是那些不能用完并且始终为玩家准备的产品。此产品的示例可以是去除广告、新游戏关卡等。
特别是对于 Google,receipts 保留在 Google 的一端。当用户重新登录时,如果用户有收据,Unity IAP 将自动恢复属于 Non-Consumable
类别的所有购买。至于 Non-Consumable
产品,您需要跟踪它们。我个人会跟踪两者以防万一,我不想让用户丢失任何购买的商品。但是,Google 会跟踪所有收据,因此如果您愿意,您可以自己查看并验证购买。
要保持数据的持久性,您需要实施 Save/Load 系统。最简单的实现是使用 PlayerPrefs,但它们非常不安全。本地设备上的任何数据都容易受到攻击者的更改,因为他们可以完全控制自己的数据。通过使用加密、代码阻塞和内存跟踪,您可以做很多事情来保护本地数据,但是一个足够优秀的黑客可以简单地反编译您的 APK 并弄清楚发生了什么。如果您真的想确保数据安全,请使用服务器。