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%:

  1. 前往 App Store Connect
  2. Select 协议、税收和银行业务
  3. 在协议选项卡下,确保免费和付费应用程序协议显示 有效 状态
  4. 确保您已在其余选项卡上填写所有必填信息。
  5. 如果在任何这些选项卡中您仍然看到空白字段,或者您可以在其中输入信息的字段,则表示您还没有完成。

要快速测试您应用的可购买产品,您可以使用 Apple's sample In app purchase example。您确实需要给它您的应用程序的 Bundle Id,并在特定文件中列出可购买的产品 ID。所有说明都在那里。

截至本 post 之日,模拟器 SKProductsRequest 运行良好。