[英]Why is updatedTransactions never called?
用戶購買商品后,通過輸入電子郵件和密碼並付款,從不調用方法 updatedTransactions。 該項目是定期購買的,但是,如果不調用 updatedTransactions 方法,我將無法執行將項目添加到應用程序的代碼。 我注意到該物品已被購買,因為如果我運行代碼來恢復購買的物品,一切正常,並且該產品會安裝到應用程序中。
這是我復制的購買產品的代碼:
-(IBAction)buyProduct:(id)sender {
NSLog(@"Purchasing: %@", self.product.productIdentifier);
SKPayment *payment = [SKPayment paymentWithProduct:self.product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
按照代碼恢復產品:
-(IBAction)restoreProduct:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
我注意到在最后一段代碼中,我有以下行:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
我也應該在購買部分添加這條線嗎?
我通過在 buyProduct 方法中添加以下代碼解決了這個問題:
-(IBAction)buyProduct:(id)sender {
NSLog(@"Purchasing: %@", self.product.productIdentifier);
SKPayment *payment = [SKPayment paymentWithProduct:self.product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; //added line
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
現在,在付款之前和付款之后調用方法 updatedTransactions。
使用以下代碼,您可以檢查一切是否順利:
for(SKPaymentTransaction *transaction in transactions) {
if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
[self unlockRemoveiAD];
[OKalertView show];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
if (transaction.transactionState == SKPaymentTransactionStateFailed) {
[alertView show];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.