checkActiveSubscription method
Implementation
Future<Map<String, dynamic>> checkActiveSubscription() async {
try {
final transactions = await SKPaymentQueueWrapper().transactions();
for (final txn in transactions) {
final productId = txn.payment.productIdentifier;
final purchaseDateMs =
int.tryParse(txn.transactionTimeStamp.toString()) ?? 0;
// Assume fixed duration per product (like Android logic)
var duration = calculatePlanDuration(productId: productId);
final expiryDate =
DateTime.fromMillisecondsSinceEpoch(purchaseDateMs).add(duration ?? Duration.zero);
final isExpired = DateTime.now().isAfter(expiryDate);
if (!isExpired) {
return {
"isSubscribed": true,
"productId": productId,
"expiryDate": expiryDate,
};
}
}
return {"isSubscribed": false};
} catch (e) {
AppLogs.showErrorLogs("iOS subscription check failed: $e");
return {"isSubscribed": false};
}
}