2012-08-14 97 views
2

我有問題讓應用內購買工作。每次我創建一個新的測試用戶並在我的iPhone上進行調試後,我就會自動獲得「您已經購買了該軟件,但它沒有下載蜜蜂」。應用內購買測試用戶不起作用

我已經添加到了我的viewDidLoad中:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

我購買功能看起來是這樣的:

- (IBAction)purchaseProduct:(id)sender { 
     SKProduct *product = [productArray objectAtIndex:0]; 
     SKPayment *payment = [SKPayment paymentWithProduct:product]; 
     [[SKPaymentQueue defaultQueue] addPayment:payment]; 
} 

我也有:

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 
for (SKPaymentTransaction *transaction in transactions) { 

    if ([transaction transactionState] == SKPaymentTransactionStatePurchased) { 
     [self transactionDidComplete:transaction]; 


    } else if ([transaction transactionState] == SKPaymentTransactionStateFailed) { 
     [self transactionDidFail:transaction]; 

    } else if ([transaction transactionState] == SKPaymentTransactionStateRestored) { 
     [self transactionDidRestore:transaction]; 

    } else { 

     NSLog(@"Unhandled case: %@", transaction); 

    } 
} 

}

只要我擊中了這個目標甚至沒有在我的測試用戶帳戶密碼輸入追按鈕,我收到此錯誤:

Unhandled case: <SKPaymentTransaction: 0x25a9a0> 

這意味着,我假設支付隊列被調用之前我可以進入我的密碼和命中好進行購買!

我有在功能 「transactionDidComplete,transactiondidFail,transactionDidRestore」

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
+0

這會不會發生,因爲我有ARC啓用? – Marquisk2 2012-08-14 22:01:03

+0

不要猜測。我向文件添加了-fno-objc-arc,並且我仍然遇到同樣的問題。 – Marquisk2 2012-08-14 22:40:57

+0

我仍然試圖瞭解在第一次購買時,交易如何在新的測試用戶帳戶上失敗。提供錯誤「您已經購買了該軟件,但尚未下載。」 – Marquisk2 2012-08-15 18:59:13

回答

1

您需要處理SKPaymentTransactionStatePurchasing下面的代碼

類似:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{ 
    //NSLog(@"updatedTransactions %@",transactions); 
    NSNumber *paymentOk = [NSNumber numberWithBool:NO]; 
    for(SKPaymentTransaction *t in transactions){ 
    //transaction failed 
    if(t.transactionState == SKPaymentTransactionStateFailed){ 
     //[self doTransactionFailure:t.error.localizedDescription]; 
     [[SKPaymentQueue defaultQueue] finishTransaction:t]; 
     continue; 
    } 
    if(t.transactionState == SKPaymentTransactionStatePurchasing){ 
     continue; 
    } 
    //transaction type here is success or restored 
    //extract the app object 
    if([t.payment.productIdentifier caseInsensitiveCompare:self.inAppPurchaseIdentifier]== NSOrderedSame){ 
     NSLog(@"Got payment for %@",t.payment.productIdentifier); 
     paymentOk = [NSNumber numberWithBool:YES]; 
    } 
    [[SKPaymentQueue defaultQueue] finishTransaction:t]; 
    } 
    if([paymentOk boolValue]==YES){ 
    [self.delegate didPurchaseWithIdentifier:self.inAppPurchaseIdentifier]; 
    } 
    else{ 
    [self.delegate didFailPurchaseWithIdentifier:self.inAppPurchaseIdentifier andReason:@"Unknown"]; 
    } 
} 
+0

我試過你的方法,甚至還有一個新的測試用戶。在我首次購買密碼後,我仍然可以得到相同的結果。你已經購買了這個,但它沒有被下載。「 – Marquisk2 2012-08-14 23:39:37