【问题标题】:In-App Purchases: Crash when view disappear应用内购买:视图消失时崩溃
【发布时间】:2011-11-29 01:43:23
【问题描述】:

我的应用程序有一个包含 4 个视图控制器的选项卡栏。第三个视图控制器包含一个“商店应用内购买”。在这个控制器中,我使用了一个管理应用内购买(产品请求、购买、交易等)的对象,它允许我获取并显示价格描述 ecc。

问题是:如果我在请求启动时更改选项卡,应用程序有时会崩溃,但并非总是如此。

我必须取消 viewDidDisappear 中的请求? [productsRequest cancel] 此代码崩溃。

【问题讨论】:

  • 我也有同样的问题。这是一个苹果错误,因为他们实现了强制委托。

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


【解决方案1】:

我也有同样的问题。 要修复它,请取消请求,一切都会好起来的。

var request: SKProductsRequest! //global to cancel when disappear
//request products when you want (viewDidLoad for example)
   request = SKProductsRequest(productIdentifiers: productID as! Set<String>)
            request.delegate = self
            request.start()

当视图控制器消失时:

 override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)
        request.delegate = nil;
        request.cancel()
        SKPaymentQueue.defaultQueue().removeTransactionObserver(self)
    }

【讨论】:

    【解决方案2】:

    您的问题可能与应用内购买无关。在您的代码中的某处,您正在向已发布的对象发送消息。运行分析器可以帮助您找到错误,但这次可能没有必要。如果 [productsRequest cancel] 崩溃,则可能是 productsRequest 的保留计数太低。

    【讨论】:

      【解决方案3】:

      删除TransactionObserver 而你的viewDidDisappear

      [[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
      

      如果你从 Inapp 视图控制器返回到另一个视图控制器,那么

      [[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
      [self dismissViewControllerAnimated:YES completion:NULL];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        相关资源
        最近更新 更多