【发布时间】:2014-06-13 10:20:33
【问题描述】:
在 Apple 的 Receipt Validation Programming Guide 的帮助下,我使用 OpenSSL 和 asn1c 编译器在设备上本地实现了收据验证。我的应用仅支持 iOS 7 及更高版本。
根据 Apple 的建议,我致电 [[NSBundle mainBundle] appStoreReceiptURL] 获取应用商店收据。当应用程序在显示任何 UI 之前“首次”启动时,我也会这样做。第一次启动呼叫是必要的,因为 Apple 建议在第一次尝试时刷新收据。作为这个调用 (SKReceiptRefreshRequest) 的结果,应用程序要求用户输入他们的 iTunes 登录信息。
现在的问题是 Apple 一直拒绝该应用程序,说我正在调用他们的生产服务器而不是沙盒服务器。但是根据我从 Receipt Validation Programming Guide 中了解的内容,只有在您使用第二种验证方法并通过您自己的安全服务器向 Apple 发送数据时才有效。但是,我在本地做所有事情,对于如何区分生产环境和沙盒环境以便我的应用可以通过审核感到非常困惑。
任何指示或建议都会非常有帮助。
【问题讨论】:
-
这没有意义。为什么 Apple 会抱怨您提交审核的应用程序正在使用生产服务器?为什么他们会说将沙盒服务器用于生产应用程序?
-
我不认为我被允许在外部发布 Apple 的解决中心消息,否则我会在这里发布。
-
只是好奇:在调用刷新之后,我假设它失败了,之后你在你的应用程序中做了什么?通读devforums,似乎只有在验证失败时阻止审阅者继续使用例如进行 IAP 购买。
-
如果失败,例如用户在 iTunes 登录提示上按下取消,只需加载应用程序的基本免费版本。没有阻塞或任何东西。
-
Anuj,你和 Apple 解决了这个问题了吗?
标签: ios objective-c receipt receipt-validation