Как проверить дату истечения срока действия FreeTrialPeriod InApp в приложении Flutter - PullRequest
0 голосов
/ 26 мая 2020

Реализуйте покупку InApp (не расходные материалы) во флаттере, используя flutter_inapp_purchase . У меня есть три плана на 1 месяц, 6 месяцев и 1 год, теперь я проверяю, является ли план на 1 месяц, затем проверьте transactionData и добавьте 30 дней, чтобы проверить дату истечения срока действия, аналогичную для других 2 планов, но проблема в том, когда пользователь находится на пробном периоде, тогда как я могу проверить дату истечения пробного периода

List<String> storeItems = ['onemonth', 'sixmonth', 'oneyear'];
List<IAPItem> subscriptions = [];
List<PurchasedItem> purchasesSubscriptions = [];
StreamSubscription _purchaseUpdatedSubscription;
StreamSubscription _purchaseErrorSubscription;
StreamSubscription _conectionSubscription;
initPurchaseState(SportsProvider sportsProvider) async {

print("initPurchaseState");
await FlutterInappPurchase.instance.initConnection;
if (!mounted) return;

_conectionSubscription =
    FlutterInappPurchase.connectionUpdated.listen((connected) {
  print('connected: $connected');
});

_purchaseUpdatedSubscription =
    FlutterInappPurchase.purchaseUpdated.listen((productItem) {
  var data = jsonDecode(productItem.transactionReceipt);
  int purchaseState = data["purchaseState"];
  String productId = data["productId"];
  String purchaseToken = data["purchaseToken"];

  print("Data : ${data.toString()}, ${purchaseState}, ${productId}, ${purchaseToken}");
  print('purchase-updated: $productItem');
  FlutterInappPurchase.instance.finishTransaction(productItem);
});

_purchaseErrorSubscription =
    FlutterInappPurchase.purchaseError.listen((purchaseError) {
  print('purchase-error: $purchaseError');
});

subscriptions =
    await FlutterInappPurchase.instance.getSubscriptions(storeItems);
//print("subscriptions: ${subscriptions}");
//subscriptions.forEach((f){print("subscription : ${f.freeTrialPeriodAndroid}");});
subscriptions.forEach((f){print("subscriptionPeriodAndroid : ${f.subscriptionPeriodAndroid}");});
subscriptions.forEach((f){print("subscriptionPeriodAndroid : ${f.toString()}");});
subscriptions.forEach((f){print("subscriptionPeriodAndroid : ${f.originalJson}");});


//Here we check for 1 month subscription is available or not by passig productId and days
var isSubscribedForMonth = await FlutterInappPurchase.instance.checkSubscribed(sku:subscriptions[0].productId,duration: Duration(days: 30));
print(isSubscribedForMonth);
//Here we check for 1 month subscription is available or not by passig productId and days
var isSubscribedForSixMonth = await FlutterInappPurchase.instance.checkSubscribed(sku:subscriptions[1].productId,duration: Duration(days: 180));
print(isSubscribedForSixMonth);
//Same for one year 
//But how can identify the current subscription is on trial period?  

// code for already subscribed
}

Есть ли способ определить текущий период пробный или регулярный.

Я пробовал, поэтому могу решить, но не получить любое соответствующее решение для моего вопроса,

, пожалуйста, помогите мне с проблемой

если требуются дополнительные разъяснения, просто прокомментируйте

...