在 Apple 的 Receipt Validation Programming Guide 的帮助下,我使用 OpenSSL 和 asn1c 编译器在设备上本地实现了收据验证。我的应用程序仅支持 iOS 7 及更高版本。
根据 Apple 的建议,我打电话[[NSBundle mainBundle] appStoreReceiptURL]
来获取应用商店的收据。当应用程序在显示任何 UI 之前“首次”启动时,我也会这样做。第一次启动呼叫是必要的,因为 Apple 建议在第一次尝试时刷新收据。作为这个调用 ( SKReceiptRefreshRequest
) 的结果,应用程序要求用户输入他们的 iTunes 登录信息。
现在的问题是苹果一直拒绝该应用程序,说我正在调用他们的生产服务器而不是沙盒服务器。但是根据我从 Receipt Validation Programming Guide 中了解的内容,只有在您使用第二种验证方法并通过您自己的安全服务器将数据发送到 Apple 时才有效。但是,我在本地做所有事情,并且对如何区分生产环境和沙盒环境以使我的应用程序可以通过审核感到非常困惑。
任何指示或建议都会非常有帮助。