【发布时间】:2019-02-28 02:27:15
【问题描述】:
看起来苹果这个月正在做任何类型的更新......最近我的应用被这条消息拒绝了
在您的服务器上验证收据时,您的服务器需要能够 处理从 Apple 获取收据的生产签名应用程序 测试环境。推荐的方法适用于您的生产 服务器始终根据生产 App Store 验证收据 第一的。如果验证失败并显示错误代码“使用沙盒收据 在生产中,”您应该针对测试环境进行验证 而是。
我的应用程序之前获得批准...这是我正在使用的代码
//Sandbox URL
//let url = URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")!
let url = URL(string: "https://buy.itunes.apple.com/verifyReceipt")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = bodyData
let task = URLSession.shared.dataTask(with: request) { (responseData, response, error) in
if let error = error {
completion(.failure(.other(error)))
} else if let responseData = responseData {
let json = try! JSONSerialization.jsonObject(with: responseData, options: []) as! Dictionary<String, Any>
//print(json)
let session = Session(receiptData: data, parsedReceipt: json)
self.sessions[session.id] = session
let result = (sessionId: session.id, currentSubscription: session.currentSubscription)
completion(.success(result))
}
}
task.resume()
}
【问题讨论】:
-
它可能已被拒绝,因为您是在应用程序上进行验证,而不是像 Apple 建议的那样在服务器上进行验证。
-
但为什么我需要服务器? 1 周前批准的版本没有服务器
-
也许他们上次没有测试应用内购买?您的 IAP 验证将失败,因为您仅针对生产端点进行验证,但在审核期间您需要针对沙盒进行验证。如果您不使用服务器,那么验证收据的价值就会小得多。
-
不同的审阅者可能会注意到不同的事情,有时您的应用不会被一个人审阅一次,而一旦您提交更新就会被审阅。如果您不想使用服务器,则可以跳过验证...
-
我怎样才能跳过验证?如果我从来没有这个问题? (我给你发了一封电子邮件 Emilio)