当iPad提示您“确认您的应用程序内购买”时,如果您点击“取消”,那么它似乎仍然会为该用户购买该产品。因为如果我再尝试再次购买,然后确认购买,那么它会给我一个警告,说“你已经购买了它。你想再免费获得吗?”
注意:这都在环境沙箱中,所以也许这就是原因?这是我的代码:
- (IBAction)makePurchase:(id)sender {
SKPayment *payment = [SKPayment paymentWithProduct:_product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
-(void)getProductInfo: (drawKitViewController *) viewController
{
if ([SKPaymentQueue canMakePayments])
{
SKProductsRequest *request = [[SKProductsRequest alloc]
initWithProductIdentifiers:
[NSSet setWithObject:self.productID]];
request.delegate = self;
[request start];
}
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *products = response.products;
if (products.count != 0)
{
_product = products[0];
}
else {
}
products = response.invalidProductIdentifiers;
for (SKProduct *product in products)
{
NSLog(@"Product not found: %@", product);
}
}
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[self unlockCreateAccount];
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"Transaction Failed");
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
default:
break;
}
}
}
答案 0 :(得分:1)
这是因为您的应用内购买产品是Non-consumable
。这意味着一旦您成功购买此产品。你不需要再买它。
如果您仍然尝试购买它而不是恢复之前购买的产品,您将收到警告"您已经购买了此产品。你想免费获得它吗?"。
BTW:您必须为用户提供恢复应用中之前购买的产品功能的入口。否则你的应用将被拒绝(我的经验)。
答案 1 :(得分:0)
这是执行购买操作的行
[SKPaymentQueue defaultQueue] addPayment:payment];
只要您在用户取消操作时不执行此代码,购买就不会通过。
但是,对于非消耗品购买,如果您的测试用户在过去的任何时间购买了该商品,您将收到您所描述的消息。您可以做的唯一事情是设置一个新的测试Apple ID用于购买或创建不同的应用内商品。