首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StoreKit的finishTransaction崩溃

StoreKit的finishTransaction崩溃
EN

Stack Overflow用户
提问于 2015-09-15 18:28:47
回答 1查看 552关注 0票数 0

我们一直在iOS 9 iPhone 6上测试使用Xcode6.4编译的应用程序,但在完成应用程序内购买时发生了无法解释的崩溃。当在paymentQueue:updatedTransactions:回调中调用finishTransaction:时,我们会遇到这样的崩溃:

代码语言:javascript
复制
#0  0x0000000199eb8158 in objc_release ()
#1  0x0000000100cfc1d8 in +[TLStoreKitSource tlsw_finishTransaction:] ()
#2  0x0000000100402914 in -[InAppPurchaseHelper paymentQueue:updatedTransactions:] at VDPremiumSettingsWebViewController.m:105
#3  0x000000018a7746cc in __NotifyObserverAboutChanges ()
#4  0x00000001851947ec in CFArrayApplyFunction ()
#5  0x000000018a774648 in -[SKPaymentQueue _notifyObserversAboutChanges:sendUpdatedDownloads:] ()
#6  0x000000018a775150 in -[SKPaymentQueue _processUpdates:trimUnmatched:sendUpdatedDownloads:] ()
#7  0x000000018a775c58 in -[SKPaymentQueue _updatePaymentsForMessage:] ()
#8  0x000000018a7744f8 in __44-[SKPaymentQueue _handleMessage:connection:]_block_invoke ()
#9  0x00000001022a5d70 in _dispatch_call_block_and_release ()
#10 0x00000001022a5d30 in _dispatch_client_callout ()
#11 0x00000001022ab780 in _dispatch_main_queue_callback_4CF ()
#12 0x0000000185268258 in __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ ()
#13 0x00000001852660c0 in __CFRunLoopRun ()
#14 0x0000000185194dc0 in CFRunLoopRunSpecific ()
#15 0x00000001902e8088 in GSEventRunModal ()
#16 0x000000018a86ef60 in UIApplicationMain ()
#17 0x000000010006c338 in main at main.m:17
#18 0x000000019a6ca8b8 in start ()
Enqueued from com.apple.root.default-qos.overcommit (Thread 16)Queue : com.apple.root.default-qos.overcommit (serial)
#0  0x00000001022b032c in _dispatch_barrier_async_f ()
#1  0x000000018a77444c in -[SKPaymentQueue _handleMessage:connection:] ()
#2  0x000000019a8e130c in _xpc_connection_call_event_handler ()
#3  0x000000019a8df0b4 in _xpc_connection_mach_event ()
#4  0x00000001022a5e2c in _dispatch_client_callout4 ()
#5  0x00000001022aa39c in _dispatch_mach_msg_invoke ()
#6  0x00000001022b2a0c in _dispatch_queue_drain ()
#7  0x00000001022a93fc in _dispatch_mach_invoke ()
#8  0x00000001022a5d30 in _dispatch_client_callout ()
#9  0x00000001022b4f38 in _dispatch_root_queue_drain ()
#10 0x00000001022b4600 in _dispatch_worker_thread3 ()
#11 0x000000019a8ad478 in _pthread_wqthread ()
#12 0x000000019a8ad028 in start_wqthread ()

我不认为这个问题是在StoreKit中特别存在的,因为purchase在示例代码上工作得很好。我怀疑我们的角色会有很糟糕的副作用。我认为找到调用哪个对象objc_release可能会解决这个问题。但是,我不知道如何使用汇编代码找到它。

有没有人遇到过这种崩溃?有什么关于如何找到问题来源的提示吗?

作为参考,回调代码如下:

代码语言:javascript
复制
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchasing:
                break;

            case SKPaymentTransactionStateFailed:
                if (self.purchaseErrorBlock) {
                    self.purchaseErrorBlock(transaction.error);
                }
                [queue finishTransaction:transaction];
                break;

            case SKPaymentTransactionStatePurchased:
                if (self.purchaseSuccessBlock) {
                    self.purchaseSuccessBlock();
                }
                [queue finishTransaction:transaction];
                break;

            case SKPaymentTransactionStateDeferred:
                [queue finishTransaction:transaction];
                break;

            case SKPaymentTransactionStateRestored:
                [queue finishTransaction:transaction];
                break;
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-13 15:15:31

在finishTransaction中,描述是这样写的:

在处于购买状态的事务上调用finishTransaction(_:)时,

会抛出异常

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32583731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档