内购(IAP)
FRVR.iap 在 Google Play、Facebook Instant、Apple iAP 等渠道计费后端之上做抽象。你描述一份目录,各渠道会把你的产品 ID 映射到自家商店。
声明商品目录
Section titled “声明商品目录”- 键(
COINS_100)是你自己代码里用的。 storeId是当前渠道商店里这个商品的名字。label是 UI 上展示用的人类可读名(没有现成的就用它)。
FRVR.init() 之后、第一次引导 tick 之后,目录就绪:
价格/币种来自底层商店。请用它们 —— 不要硬编码价格。
错误类型:
| 错误 | 含义 |
|---|---|
IAPPurchaseErrorCancelledByUser | 用户关掉了支付窗口。这不是要弹给用户看的错误。 |
IAPPurchaseErrorAlreadyOwned | 该账号已拥有该耐用品。 |
IAPPurchaseErrorUnknownProduct | 产品 ID 错误。 |
IAPError | 兜底通用错误。看 .code。 |
消耗品 vs. 耐用品
Section titled “消耗品 vs. 耐用品”消耗品(金币、宝石)可以反复购买。发完物品后,要消耗这笔购买,商店才会放开让用户再次购买:
耐用品(去广告、角色皮肤)永远不消耗。在新设备上重新发放:
从崩溃中恢复
Section titled “从崩溃中恢复”如果你的 App 在购买与发货之间崩了,商店会把收据保留为待处理状态。每次启动时:
哪怕用户在购买中途强杀了 App,这一步也能把闭环兜回来。
dev 渠道自带一份模拟目录和一条假的购买流程。可以试一下买 → 消耗 → 恢复。
IAP:目录、购买、消耗、恢复
loading SDK…
API 摘要
Section titled “API 摘要”| 方法 | 作用 |
|---|---|
isReady() / onReady(cb) | provider 是否就绪。 |
getCatalog() | 按你定义的 ID 列出所有商品。 |
getProductById(id) | 单个商品,含商店价格。 |
purchase(id, meta?) | 发起结账。resolve 出收据。 |
consumePurchase(purchase) | 把消耗品标记为已发放。 |
restorePurchases() | 重新派发用户拥有的耐用品。 |
getUnconsumedPurchases() | 未完成的消耗品 —— 启动时调用以恢复。 |
errors.* | 用 instanceof 判定的错误类。 |