返回
APP STORE API 革新在即,开发者必须知道的重大变化!
iOS
2023-08-05 02:45:40
verifyReceipt API 弃用:开发者指南
苹果弃用 verifyReceipt API 的原因
苹果最近宣布弃用 verifyReceipt API,这引发了开发者的关注。弃用的主要原因包括:
- 安全漏洞: verifyReceipt API 存在潜在的安全漏洞,攻击者可能利用这些漏洞伪造收据并绕过应用内购买流程。
- 低效: verifyReceipt API 效率低下,在验证大量收据时可能会导致延迟。
- 兼容性问题: verifyReceipt API 与苹果最新操作系统不兼容,给开发人员在更新应用时带来困难。
verifyReceipt API 的兼容性
verifyReceipt API 仍然可以在 iOS 15 及更早的系统中使用。然而,在这些系统中使用 verifyReceipt API 时,可能会遇到以下兼容性问题:
- 与新收据格式不兼容: 苹果在 iOS 16 中引入了新的收据格式,verifyReceipt API 无法验证这些新格式的收据。
- 与新应用内购买流程不兼容: 苹果在 iOS 16 中引入了新的应用内购买流程,verifyReceipt API 无法验证这些新流程生成的收据。
verifyReceipt API 的迁移建议
为了避免兼容性问题,苹果建议开发者尽快将应用迁移到新的验证机制。新的验证机制包括:
- App Store Server API: App Store Server API 是一个新的 API,可以用来验证收据并获取应用内购买信息。
- StoreKit 2: StoreKit 2 是一个新的框架,可以用来管理应用内购买。
receiptData 旧收据伪造问题
在 iOS 15 及更早的系统中,存在一个旧收据伪造问题。攻击者可以利用此问题伪造收据并绕过应用内购买流程。苹果已经修复了此问题,但是在 iOS 15 及更早的系统中仍然存在安全隐患。
苹果新推出的 App Store Server Lib
为了帮助开发者迁移到新的验证机制,苹果推出了 App Store Server Lib。App Store Server Lib 是一个开源库,可以帮助开发者快速构建与 App Store Server API 交互的代码。
代码示例:
使用 App Store Server API 验证收据:
import StoreKit
let receiptData = ... // Replace this with the actual receipt data
let appStoreServerURL = URL(string: "https://appstoreconnect.apple.com/verifyReceipt")!
var request = URLRequest(url: appStoreServerURL)
request.httpMethod = "POST"
request.httpBody = try? JSONSerialization.data(withJSONObject: ["receipt-data": receiptData], options: [])
let task = URLSession.shared.dataTask(with: request) { data, _, error in
if let data = data, error == nil {
do {
let response = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
// Process the response here
} catch {
// Handle error
}
} else {
// Handle error
}
}
task.resume()
常见问题解答
- 为什么苹果要弃用 verifyReceipt API?
- 由于安全漏洞、低效和兼容性问题。
- 我应该使用哪个新的验证机制?
- App Store Server API 或 StoreKit 2。
- 我应该立即迁移到新的验证机制吗?
- 是的,尽快迁移以避免兼容性问题和安全隐患。
- App Store Server Lib 有什么作用?
- 它是一个开源库,可以帮助开发者快速构建与 App Store Server API 交互的代码。
- 我可以在哪里找到更多信息?
结论
verifyReceipt API 的弃用将对开发者产生重大影响。开发者需要尽快将应用迁移到新的验证机制,以避免兼容性问题和安全隐患。苹果提供了 App Store Server API、StoreKit 2 和 App Store Server Lib 等资源,以帮助开发者完成迁移过程。