gpt4 book ai didi

ios - 如何在应用内购买中识别当前的订阅计划[自动续订]

转载 作者:行者123 更新时间:2023-11-29 05:39:54 24 4
gpt4 key购买 nike

我在应用内购买中有三个订阅计划1个月6个月1年所以我想检查用户当前的订阅计划和过期日期,所以我现在要做的是从收据中获取latest_receipt_info正在使用最后一个对象。从最后一个对象中,我获取product_id并将其用作当前订阅计划,并使用expires_date来检查活跃与否。下面是我正在使用的代码块。那么这是正确的方法吗?

if([dict[@"status"] integerValue] == 0) {
if([dict.allKeys containsObject:@"latest_receipt_info"]) {
NSArray *iapReceipts = dict[@"latest_receipt_info"];
if(iapReceipts) {
if(iapReceipts.count > 0) {
NSDictionary *latestReceipt = [iapReceipts lastObject];
if(latestReceipt) {
_currentIAPID = latestReceipt[@"product_id"];
NSDate *expireDate = latestReceipt[@"expires_date"];
if(expireDate) {
NSInteger days = DaysBetween(NSDate.date, expireDate);
if(days >= 0) {
NSLog(@"days %ld",(long)days);
status = SubscriptionStatusActive;

} else {
NSLog(@"Subs :NEGATIVE DAYS");
status = SubscriptionStatusExpired;
}
}
}
}
}
}
}

任何建议都会更有帮助。

最佳答案

不,这不是正确的方法。您不应该获得最后一个对象,因为该数组未排序。它包含您的所有交易,包括所有续订。此示例代码未考虑cancel_date:

- (void)parseResponse:(NSDictionary*)dict{
if ([dict[@"status"] integerValue] != 0) {return;}

NSArray *iapReceipts = dict[@"latest_receipt_info"];

NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss VV";

for (NSDictionary *iapReceipt in iapReceipts){
NSString *productID = iapReceipt[@"product_id"];
NSDate *date = [formatter dateFromString:iapReceipt[@"expires_date"]?:@""];

if (date && [date timeIntervalSinceDate:[NSDate date]] > 0){
[[NSUserDefaults standardUserDefaults] setObject:date forKey:productID];
}
}
}

- (BOOL)isSubscriptionActive:(NSString*)productID {
NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:productID];
if (date && [date timeIntervalSinceDate:[NSDate date]] > 0){
return YES;
} else {
return NO;
}
}

关于ios - 如何在应用内购买中识别当前的订阅计划[自动续订],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com