我有一个应用程序,其中我有5个非消费类应用内购买。
在每次单独购买应用程序中,我使用图像更新我的数据库。
5个非消费类应用内购买套餐。
现在有一个恢复购买功能,因为它是一个非消费类应用程序购买。
我的应用中只有一个还原按钮。但是如何识别哪个产品已经被购买?
我在应用购买中使用以下代码进行恢复。但它不会更新我的数据库,因为它不知道以前购买了哪些产品。
if ([transaction.payment.productIdentifier isEqualToString:@"Pack1"])
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp1Once"])
{
// app already launched
NSLog(@"Launching secondtime");
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp1Once"];
NSLog(@"Launching first time");
requestText= @"Animal";
[self MakeQueryForUpdate];
[self getdata];
}
}
else if ([transaction.payment.productIdentifier isEqualToString:@"Pack2"])
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp2Once"])
{
// app already launched
NSLog(@"Launching secondtime");
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp2Once"];
NSLog(@"Launching first time");
requestText= @"Celebrity";
[self MakeQueryForUpdate];
[self getdata];
}
}
else if ([transaction.payment.productIdentifier isEqualToString:@"Pack3"])
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedp3Once"])
{
// app already launched
NSLog(@"Launching secondtime");
}
else
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedp3Once"];
NSLog(@"Launching first time");
requestText= @"Nature";
[self MakeQueryForUpdate];
[self getdata];
}
}
如何获取仅购买的产品ID的列表?
任何帮助将不胜感激......
答案 0 :(得分:4)
要获取所购买产品的清单,您可以拨打以下功能:
[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
这将返回以前购买的物品清单。
答案 1 :(得分:4)
您可以使用以下方式恢复购买:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
然后 SKPaymentTransactionObserver 将调用其
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
使用 SKPaymentTransactionStatePurchased 交易状态。您可以看到它为事务返回数组。
您可以使用
for (SKPaymentTransaction * transaction in transactions) {
NSLog(@"Purchased indentifier : %@", transaction.payment.productIdentifier);
}
这将打印出用户购买的标识符。您可以针对这些值设置 NSUserDefaults