购买汽车可再生购买后,应用程序崩溃

时间:2017-03-28 13:09:04

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

我一直试图在试用期内实施自动续订(ARS)。我已经有一个实施ARS的应用程序,它工作正常。 现在我想在这些订阅中添加试用期。因此,为了测试目的,我创建了两个新产品,试用期为1个月。

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

以下是崩溃日志和快照:

  

由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' * - [__ NSDictionaryM removeObjectForKey:]:key不能为nil'   * 第一次抛出调用堆栈:   (0x186c081c0 0x18564055c 0x186b06534 0x100f052a4 0x19362ded8 0x1022e925c 0x1022e921c 0x1022ee284 0x186bb5f2c 0x186bb3b18 0x186ae2048 0x188565198 0x18cabc628 0x18cab7360 0x10065831c 0x185ac45b8)   libc ++ abi.dylib:以NSException类型的未捕获异常终止

snapshot

Snapshot with line of crash selected

1 个答案:

答案 0 :(得分:0)

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

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

  

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

请注意setObject:forKeyedSubscript:,而不是上述问题中的removeObjectForKey:。我试图购买带有入门定价的IAP,即使我成功获得Apple的确认收据,它仍然会崩溃。重启应用程序后,我能够使用该产品。

我花了太多时间试图找到解除分配的代理,调整Foundation对象方法并在沙盒用户之后创建沙盒用户。一直存在的问题是iTunes Connect中的信息不完整。

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

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