IOS13 beta 5:SKProductsRequest 是否可以在模拟器上运行?
IOS13 beta 5: Does SKProductsRequest supposed to work on simulator?
尽管在实际设备上一切正常,但我想知道为什么在 iOS 13 beta 5 上的模拟器上 永远不会回调代理?
我在互联网上搜索了答案,但一无所获。
我实现了协议的 3 个功能如下:
public class StoreKit {
var request: SKProductsRequest? = nil // Keep a strong reference
public func fetchProducts() {
print("\(#function): start fetching products")
let r = SKProductsRequest(productIdentifiers: productIDs)
request = r
r.delegate = self
r.start()
}
}
// MARK: - Get the requested products
extension StoreKit: SKProductsRequestDelegate {
/// Products are received
public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
print("\(#function): did receive")
}
/// Unable to received the products
public func request(_ request: SKRequest, didFailWithError error: Error) {
print("\(#function): Error for request: \(error.localizedDescription)")
}
public func requestDidFinish(_ request: SKRequest) {
print("\(#function): did finish")
}
}
Apple 已在 Xcode beta 6(2019 年 8 月 16 日)中修复此问题。
[2019 年 9 月 30 日更新]
对于仍然遇到此问题的用户,您是否下载了 2019 年 9 月 24 日发布的 Xcode v11.1 (11A1027)?我对此没有任何问题。如果还是这样,请尝试添加一些信息,以便我进一步帮助您。
遇到了同样的问题,如作者回答的评论中所述。
(
request:didFailWithError: with error message being: Error Domain=ASDErrorDomain Code=507 "Error decoding object" UserInfo={NSLocalizedDescription=Error decoding object, NSLocalizedFailureReason=Attempted to decode store response}
)
我将项目的 iOS 部署目标更改为 iOS 13.0,并且在模拟器中成功加载了产品。
Xcode 11.2 (11B52) iOS 13.2 模拟器 为我工作
正如几乎所有相关问题的建议中所述-确保您已完全完成产品设置,例如应用内购买。最重要的是确保您的协议、税务和银行业务部分已完成 100%:
- 前往 App Store Connect
- Select 协议、税收和银行业务
- 在协议选项卡下,确保免费和付费应用程序协议显示 有效 状态
- 确保您已在其余选项卡上填写所有必填信息。
- 如果在任何这些选项卡中您仍然看到空白字段,或者您可以在其中输入信息的字段,则表示您还没有完成。
要快速测试您应用的可购买产品,您可以使用 Apple's sample In app purchase example。您确实需要给它您的应用程序的 Bundle Id,并在特定文件中列出可购买的产品 ID。所有说明都在那里。
截至本 post 之日,模拟器 SKProductsRequest 运行良好。
尽管在实际设备上一切正常,但我想知道为什么在 iOS 13 beta 5 上的模拟器上 永远不会回调代理?
我在互联网上搜索了答案,但一无所获。
我实现了协议的 3 个功能如下:
public class StoreKit {
var request: SKProductsRequest? = nil // Keep a strong reference
public func fetchProducts() {
print("\(#function): start fetching products")
let r = SKProductsRequest(productIdentifiers: productIDs)
request = r
r.delegate = self
r.start()
}
}
// MARK: - Get the requested products
extension StoreKit: SKProductsRequestDelegate {
/// Products are received
public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
print("\(#function): did receive")
}
/// Unable to received the products
public func request(_ request: SKRequest, didFailWithError error: Error) {
print("\(#function): Error for request: \(error.localizedDescription)")
}
public func requestDidFinish(_ request: SKRequest) {
print("\(#function): did finish")
}
}
Apple 已在 Xcode beta 6(2019 年 8 月 16 日)中修复此问题。
[2019 年 9 月 30 日更新]
对于仍然遇到此问题的用户,您是否下载了 2019 年 9 月 24 日发布的 Xcode v11.1 (11A1027)?我对此没有任何问题。如果还是这样,请尝试添加一些信息,以便我进一步帮助您。
遇到了同样的问题,如作者回答的评论中所述。
(
request:didFailWithError: with error message being: Error Domain=ASDErrorDomain Code=507 "Error decoding object" UserInfo={NSLocalizedDescription=Error decoding object, NSLocalizedFailureReason=Attempted to decode store response}
)
我将项目的 iOS 部署目标更改为 iOS 13.0,并且在模拟器中成功加载了产品。
Xcode 11.2 (11B52) iOS 13.2 模拟器 为我工作
正如几乎所有相关问题的建议中所述-确保您已完全完成产品设置,例如应用内购买。最重要的是确保您的协议、税务和银行业务部分已完成 100%:
- 前往 App Store Connect
- Select 协议、税收和银行业务
- 在协议选项卡下,确保免费和付费应用程序协议显示 有效 状态
- 确保您已在其余选项卡上填写所有必填信息。
- 如果在任何这些选项卡中您仍然看到空白字段,或者您可以在其中输入信息的字段,则表示您还没有完成。
要快速测试您应用的可购买产品,您可以使用 Apple's sample In app purchase example。您确实需要给它您的应用程序的 Bundle Id,并在特定文件中列出可购买的产品 ID。所有说明都在那里。
截至本 post 之日,模拟器 SKProductsRequest 运行良好。