ios 尝试购买应用内产品时,SKPaymentQueue错误代码4097

vuktfyat  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(415)

我正在使用StoreKit处理iOS应用的应用内购买。购买通常会成功,但有一个奇怪的错误,我试图弄清楚可以用它做什么:

<SKPaymentQueue: 0x281d5ccc0>: Error in remote proxy while processing transaction: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service with pid 60667 named com.apple.storekitd" UserInfo={NSDebugDescription=connection to service with pid 60667 named com.apple.storekitd}

字符串
这个错误很少发生,但它很常见,足以成为我的应用程序的一个问题。我首先使用SKProductsRequest初始化产品,初始化完成后,可以使用SKMutablePayment购买产品。
我无法找到有关此错误的有用文档。为什么会这样呢?有什么办法可以预防吗?

iqjalb3h

iqjalb3h1#

每当相关的助手守护进程崩溃或没有响应时,都会返回NSCocoaErrorDomain域的错误和代码4097。我在CloudKit代码中看到过,当“cloudd”进程失败时。正如您所展示的,如果“com.apple.storekitd”进程出现问题,StoreKit代码可能会发生这种情况。
在许多情况下,解决方案是在延迟后重试操作。这使得违规进程有机会被iOS重新启动。
无论您在哪里获取Error,都可以添加类似于以下内容的代码:

if let nserror = error as? NSError, nserror.domain == NSCocoaErrorDomain && nserror.code == 4097 {
    // Wait 10-30 seconds and try the transaction again
}

字符串
其中error是可选的Error属性或变量。
在极少数情况下,该问题可能需要重新启动设备。这不是你的应用程序的错。这是一个iOS问题。

相关问题