我目前遇到的问题是,我的Flutter应用程序无法从Google Play商店获取可消耗的应用内产品。但是,我的应用程序可以从Apple应用商店获取所有产品。
我无法确定我缺少了哪个步骤或导致所有产品ID都找不到。 我正在使用Flutter的in_app_purchase模块来促进应用内购买。
对于Android,这里是我采取的设置步骤。
- 我已经设置了我的Google Play控制台和开发者帐户
- 完成了“设置您的应用程序”部分中的所有任务
- 生成一个密钥库文件来签署我的应用程序
keytool -genkey -v -keystore c:\Users\USER_NAME\key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
- 创建一个名为 /android/key.properties 的文件,其中包含对我的密钥库文件的引用。该文件的内容如下:
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, such as /Users/<user name>/key.jks>
我已经配置了我的 build.gradle 文件,包括以下内容。
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
6. 创建了一个应用程序包并在封闭轨道下发布它
flutter build appbundle --flavor prod --release
。在上传构件时,我还让谷歌签署了我的应用程序 "Google signing the app"。
7. 我添加了一个与开发者帐户没有关联的测试人员,并在 "许可证测试" 下添加了相同的电子邮件,使用许可证响应 "RESPOND_NORMALLY"。
8. 我还创建了三个可消耗产品并将它们设置为活动状态。以下是获取产品的代码:
List<String> _kProductIds = <String>[
'my_app_premium_year_c',
'my_app_premium_month_c',
'my_app_premium_week_c'
];
final ProductDetailsResponse productResponse =
await InAppPurchase.instance.queryProductDetails(_kProductIds.toSet());
以下是我得到的意外结果。我的所有产品都在notFoundIDs列表中,包括[my_app_premium_year_c, my_app_premium_month_c, my_app_premium_week_c]。
当包含以下代码时,我希望notFoundIDs列表为空: print("ProductIDs not found: ${productResponse.notFoundIDs}");
非常感谢任何提示或建议。
编辑:以下屏幕截图显示了我在Google控制台上的应用内产品页面。 我遮盖了某些标识符以保护我的隐私,但是屏幕截图中的产品ID与我的代码中的产品ID相匹配。
![in-app-products](https://istack.dev59.com/GK0Dh.webp)
![alpha track](https://istack.dev59.com/8Cmf2.webp)