我正在構建iOS應用並嘗試實施應用內購買(非消費品)。告知「已購買商品」消息後,應用內購買失敗
所有的軟件包ID等都已設置並正常運行,並且我可以在我獲取Apple Store服務器時看到我的產品有效。但是,在測試時,我在paymentQueue回調中遇到了失敗的事務。
這裏是在iPhone模擬器一步一步發生了什麼:「你想購買.. $ 0.99」
- 一個消息框,詢問這是正確的
- 我點擊是。
- 大約一秒鐘後,它說我已經買了它(正確的,我測試 - 最初在調試時購買它)。我點擊確定。
- 它抱怨登錄要求(它說像MZFinance_LoginRequired,我認爲它是一個缺少的字符串標識符。)我點擊確定。
- App Store登錄框彈出,我輸入我的測試帳戶憑證。
- 我的Xcode斷點被擊中,交易狀態爲SKPaymentTransactionStateFailed。
這裏是我的代碼的相關部分:
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray* arr = response.products;
for (int i = 0; i < arr.count; i++) {
SKProduct* product = [arr objectAtIndex:i];
if([product.productIdentifier isEqualToString:@"<<my in app purchase id which is correct and working>>"]){
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
}
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for (SKPaymentTransaction* ta in transactions) {
switch (ta.transactionState) {
case SKPaymentTransactionStatePurchased:
case SKPaymentTransactionStateRestored:
receipt = [ta transactionReceipt];
[self performSelectorInBackground:@selector(validateFromServer) withObject:nil];
break;
case SKPaymentTransactionStateFailed:
[self purchaseFailed];
break;
}
if(!ta.transactionState == SKPaymentTransactionStatePurchasing){
[[SKPaymentQueue defaultQueue] finishTransaction:ta];
}
}
}}
[self purchaseFailed]
總是被擊中,其中只是通知用戶。這裏有什麼可能是錯的? (我是iOS新手,很明顯 - iOS在購買應用程序)。 謝謝。
更新:我的測試帳戶憑據是正確的,因爲如果我輸入了錯誤信息,我將收到一條不同的(無效登錄)消息。