我正在使用 Raywenderlich 提供的 VerificationController在我的几个应用程序中,这太棒了。完全可靠、易于实现且有效。它已经在我的三个应用中运行了几个月。
但是,两天前,所有三个应用程序突然停止正常工作。现在,对于我的实时用户和我自己的测试帐户,每笔购买都被无一异常(exception)地标记为无效。我没有对应用程序或它们的后端进行任何更改,事实上我一直在搬公寓,所以我一周或更长时间没有碰过它们。所有三个应用程序的变化都是即时的,我开始收到投诉是可以理解的。
问题似乎出在 checkReceiptSecurity()
函数中(当它需要为有效交易返回 YES 时,它总是返回 NO),但该函数中的代码超出了我的理解能力。我希望有人遇到过这样的事情,或者甚至现在正在经历,并且知道解决方案?
据我所知,这似乎发生在第二行(VerificationController.m 第 158 行)。
require(signature_length > offsetof(struct signature_blob, certificate), outLabel);
require(signature_blob_ptr->version == 2, outLabel);
certificate_len = ntohl(signature_blob_ptr->cert_len);
注释为“确保签名 blob 足够长以安全地提取版本和 cert_len 字段,然后对字段执行完整性检查”,这很有帮助。当它到达 signature_blob_ptr
行时,它突然跳到函数的末尾,我认为这意味着它未能通过与 Apple 的某些响应的版本号有关的检查?
任何人都可以了解正在发生的事情吗?这对我的应用程序组合显然是毁灭性的,我需要立即修复它。如果需要,我将暂时禁用验证并发布更新,但我想为已更改的内容找到修复...
在 https://forums.developer.apple.com 搜索“收据验证”
显然,证书更新刚刚使 VerificationController 停止工作。
明显但一点也不快的解决方法是使用更新的收据验证处理。见:https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573-CH105-SW1
至于上面的代码,signature_blob_ptr->version == 3 现在。但是在代码中使用 3 而不是 2 并不能解决问题,因为签名不再是 128 字节长。
关于ios - VerificationController 突然停止为所有应用程序工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312710/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |