Flutter/Google APIs中无需手动输入动态获取Google Play订阅SKU列表
动态获取Google Play订阅SKU的可行方案
方案1:服务器端通过Google Play Developer API批量拉取
这是最直接的官方方案,能一次性获取应用下所有订阅SKU,不需要手动逐个指定:
- 操作步骤:
- 去Google Cloud Console创建服务账号,将其关联到你的Google Play开发者账号,授予
查看应用信息及下载批量报告权限 - 调用Android Publisher API的
subscriptions.list接口,传入应用包名,即可拿到所有订阅的SKU、标题、价格等完整数据 - 将这些SKU返回给Flutter客户端,再用
in_app_purchase插件加载对应的产品详情即可
- 去Google Cloud Console创建服务账号,将其关联到你的Google Play开发者账号,授予
- 服务器端Python示例代码:
from google.oauth2 import service_account from googleapiclient.discovery import build # 替换为你的服务账号密钥路径和应用包名 SERVICE_ACCOUNT_KEY = 'your-service-account.json' APP_PACKAGE = 'com.your.app.id' credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY, scopes=['https://www.googleapis.com/auth/androidpublisher'] ) publisher = build('androidpublisher', 'v3', credentials=credentials) # 获取所有订阅SKU subs_response = publisher.subscriptions().list(packageName=APP_PACKAGE).execute() sku_list = [sub['sku'] for sub in subs_response.get('subscriptions', [])] print(sku_list)
方案2:远程配置+Flutter动态拉取(无需服务器)
如果不想搭建服务器,可以用远程配置工具做中转:
- 先在Google Play后台整理好所有订阅SKU,同步到Firebase Remote Config或其他远程配置服务中
- Flutter客户端启动时先拉取远程配置里的SKU列表,再用
in_app_purchase插件获取这些SKU的详情 - 后续新增SKU时,只需在Google Play后台添加,同时更新远程配置的SKU列表,无需发版就能让客户端获取到新SKU
注意:Flutter的
in_app_purchase插件本身不支持直接获取所有上架SKU,必须先拿到SKU列表才能加载产品详情,所以上述方案都是先通过其他渠道拿到SKU,再用插件加载详情。
内容的提问来源于stack exchange,提问作者Oussama Ridéne
相关产品推荐
相关产品推荐

