ios - 付款队列 :(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions is not called while restoreCompletedTransactions

标签 ios objective-c in-app-purchase storekit

您好,我需要在 Inapp-Purchase 中实现恢复功能,为此制作了一个调用方法的“恢复”按钮

-(void)restorePurchasedProductsWithProductId:(NSString*)prodID
{
    _productIdsArray = [[NSMutableArray alloc] init];
    productID = [prodID retain];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}

它给了我一个弹出窗口,让我输入 apple id 的密码。然后什么都没有发生。

我在某处读到它叫

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

所以我喜欢这个

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    NSLog(@"paymentQueue");
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                NSLog(@"restored");
                [self restoreTransaction:transaction];
                break;
            default:
                break;

        }
    }
}

但问题是上面的方法既没有调用this

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

也不是

-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

我还包含了所需的协议(protocol),

有人能帮我解释为什么这些委托(delegate)方法不调用恢复过程吗? 我正在尝试使用测试帐户。

最佳答案

您需要确保实现 paymentQueueRestoreCompletedTransactionsFinished:paymentQueue: restoreCompletedTransactionsFailedWithError: 的类已注册为您的支付队列的观察者。

如果您在 UIViewController 中编写了这段代码,请尝试将其添加到您的 viewDidLoad 中:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

viewDidDisappear 中:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

关于ios - 付款队列 :(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions is not called while restoreCompletedTransactions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483526/

相关文章:

android - 无法从我的 google play 开发者控制台中删除应用内订阅

iphone - 创建NSDictionary的NSDictionary

ios - iPhone X 自定义导航无法正确显示

ios - 根据属性值更改颜色

ios - 使用 native 应用程序登录 Facebook

android - 签名验证失败 - Android 应用内购买

Swift 中带有普通和粗体文本标签的 iOS 选择器 View

ios - iOS 中的 GTLServiceDrive executeQuery 生成 unauthorized_client 错误

iphone - 在 iPhone 的 LinkedIn 集成中共享图像

android - 从服务器 RPC :s-7:AEC-0 检索信息时出错