【发布时间】:2020-04-24 07:30:23
【问题描述】:
我尝试实现非消耗品的应用内购买,但至少在 iOS 上无法验证购买。
每当我让函数“_verifyPurchase()”返回 true 时,一切都很好。
这就是让我认为验证过程是问题的原因。
Future<bool> _verifyPurchase(String productID) async {
final appState = Provider.of<AppState>(context);
PurchaseDetails purchase = await _hasPurchased(productID);
SharedPreferences prefs = await SharedPreferences.getInstance();
print('verify'+purchase?.productID.toString()+(purchase?.error).toString());
if (purchase != null &&
(purchase.status == PurchaseStatus.purchased || purchase.transactionDate != null) &&
_kProductIds.contains(productID)) {
if(productID == _kProductIds[0]) {
print('has purchased remove ads');
prefs.setBool(productID, true);
setState(() {
appState.setBoughtRemoveAds = true;
});
}else if(productID == _kProductIds[1]){
print('has purchased premium');
prefs.setBool(productID, true);
setState(() {
appState.setBoughtPremium = true;
});
}
return true;
}
return false;
}
我不想在服务器端验证购买,并认为“_hasPurchased()”函数很可能已损坏
Future<PurchaseDetails> _hasPurchased(String productID) async {
final QueryPurchaseDetailsResponse response = await InAppPurchaseConnection.instance.queryPastPurchases();
return response.pastPurchases.firstWhere((purchase) => purchase.productID == productID,
orElse: () => null);
}
我已按照Fireship.io 的教程进行操作
编辑:代码中的小错误。
【问题讨论】: