【问题标题】:App crashes after purchasing auto renewable purchase with trial通过试用购买自动更新购买后应用程序崩溃
【发布时间】:2017-03-28 13:09:03
【问题描述】:

我一直在尝试实施带有试用期的自动续订订阅 (ARS)。我已经有一个实现了 ARS 的应用程序,它运行良好。 现在我想在这些订阅中添加试用期。因此,出于测试目的,我创建了两个新产品,其中设置了 1 个月的试用期。

现在在沙盒环境中,当我尝试从我已经订阅的沙盒 ID 购买这两个新产品时,过程顺利进行,没有任何问题。但是当我尝试使用新的沙盒帐户购买它们时,应用程序在达到updatedTransaction 观察者方法后崩溃。在这种方法中,我收到了产品购买的收据和整个交易细节。但是在此之后应用程序崩溃了。恢复购买同一产品的效果很好。

以下是崩溃日志和快照:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSDictionaryM removeObjectForKey:]: key cannot be nil” * 首先抛出调用栈: (0x186C081C0 0x186B06534 0x1100f052a4 0x10222a925c 0x1022e925c 0x1022e925c 0x1022e925c 0x102220925c 0x1022e925c 0x1022e921c 0x186bb5f2c 0x186bb3b18 0x186aabc628 0x186aabc628 0x18cab28 0x18cab7360 0x10065831c 0x185831c 0x185831c 0x185ab45b8) libc++abi.dylib:以 NSException 类型的未捕获异常终止

【问题讨论】:

  • 你能显示它崩溃的那一行吗?单击左侧调用堆栈中的[AppStore productsRequest:] 方法并使用其代码编辑您的问题,说明它崩溃的行。
  • 你确定你没有检查任何行吗?因为它以断点终止
  • @pckill 我已根据您的要求添加了快照。
  • @RawandAhmad 这是一个异常断点
  • 您有[ApStore productsRequest:didReceiveResponse:] 的代码吗?我的印象是调试器会显示它在该函数中崩溃的行,但它似乎来自某个库。

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


【解决方案1】:

这可能无法直接回答上述问题,但这是我能找到的与我遇到的问题最接近的类似问题。希望如果他们遇到这个问题,这可以节省他们的时间(跳到底部以获得简短的答案)。

我得到了相同的堆栈跟踪异常,但原因略有不同:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'* -[__NSDictionaryM setObject:forKeyedSubscript:]: key 不能为 nil'

注意setObject:forKeyedSubscript: 而不是removeObjectForKey: 就像上面的问题一样。我试图以介绍性定价购买 IAP,即使我成功地从 Apple 获得确认收据,它仍然会崩溃。重启应用后我就可以使用产品了。

我花了太多时间试图找到解除分配的委托、调整 Foundation 对象方法以及在沙盒用户之后创建沙盒用户。问题一直在于 iTunes Connect 中的信息不完整。

崩溃的原因是 iTunes Connect 中产品上的元数据不完整。我需要向审阅者添加本地化名称和注释,以使产品“准备好进行审阅”而不是“缺少元数据”。

TL;DR确保您尝试购买的产品标记为“可供审核”而不是“缺少元数据”

【讨论】:

  • 我们的试用产品具有适当的元数据并可供审核。但我们不断在沙盒中遇到这些崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多