我一直在尝试实现带有试用期的自动续订订阅 (ARS)。我已经有一个实现了 ARS 的应用程序,它运行良好。
现在我想在这些订阅中添加试用期。因此,出于测试目的,我创建了两个新产品,其中设置了 1 个月的试用期。
现在在沙盒环境中,当我尝试从我已经订阅的沙盒 ID 购买这两个新产品时,过程顺利进行,没有任何问题。但是当我尝试使用新的沙盒帐户购买它们时,应用程序在到达 updatedTransaction 观察者方法后崩溃。在这种方法中,我收到了产品购买的收据和整个交易细节。但是在此之后应用程序崩溃了。恢复购买同一产品的效果很好。
以下是崩溃日志和快照:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSDictionaryM removeObjectForKey:]: key cannot be nil'
* First throw call stack:
(0x186c081c0 0x18564055c 0x186b06534 0x100f052a4 0x19362ded8 0x1022e925c 0x1022e921c 0x1022ee284 0x186bb5f2c 0x186bb3b18 0x186ae2048 0x188565198 0x18cabc628 0x18cab7360 0x10065831c 0x185ac45b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
Best Answer-推荐答案 strong>
这可能无法直接回答上述问题,但这是我能找到的与我遇到的问题最接近的类似问题。希望如果他们遇到这种情况,这可以节省他们的时间(跳到底部以获得简短的答案)。
我得到了相同的堆栈跟踪异常,但原因略有不同:
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSDictionaryM
setObject:forKeyedSubscript:]: key cannot be nil'
注意 setObject:forKeyedSubscript: 而不是 removeObjectForKey: 就像上面的问题一样。我试图以介绍性定价购买 IAP,即使我成功地从 Apple 获得确认收据,它仍然会崩溃。重启应用后我就可以使用产品了。
我花了太多时间试图找到解除分配的委托(delegate)、调动 Foundation 对象方法以及在沙盒用户之后创建沙盒用户。问题一直在于 iTunes Connect 中的信息不完整。
崩溃的原因是 iTunes Connect 中产品上的元数据不完整。我需要向审阅者添加本地化名称和注释,以使产品“准备好进行审阅”而不是“缺少元数据”。
TL;DR确保您尝试购买的产品标记为“可供审核”而不是“缺少元数据”
关于ios - 通过试用购买自动更新购买后应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/43070494/
|