SKProductsRequestDelegate 方法是否总是在主线程上调用?

Are SKProductsRequestDelegate methods always called on the main thread?

在 iOS 13 中,我收到了一些崩溃报告,这些报告似乎是在收到 productsRequest(_:didReceive:) 后在与主线程不同的线程上执行 UI 工作的结果,并且request(_:didFailWithError:)。文档没有说明调用哪个线程,但我相信它一直是主队列。现在是从不同的队列调用它们吗?

我用 iOS 13.1.2 确认它们确实可以从不同的队列调用:com.apple.root.default-qos (concurrent)。哎呀

解决方案是通过 DispatchQueue.main.async.

将该工作分派回主线程