Qia*_*Kai 44 storekit ios ios16
在 iOS 15.6 beta5 和 iOS 16.0 beta 中:
\n当发布 UISceneDidDisconnectNotification 时,任何活动的 SKStoreProductViewController 实例都会因名为 sceneDisconnected 的无法识别的选择器而崩溃。
\n-[SKStoreProductViewController sceneDisconnected:]: 无法识别的选择器发送到实例 0x115161a00
\n该崩溃仅发生在最新的iOS15.6和iOS16 beta版本中。然而我在任何官方文档中都找不到选择器名称\xe2\x80\xa6\xe2\x80\xa6
\n有什么解决办法吗?还是我有什么地方没做对?
\nLor*_*nzo 25
看起来这个问题已在今天发布的 iOS 15.6 候选版本中得到修复。
2022 年 9 月 14 日更新: Apple 在官方 15.7 版本中重新引入了此崩溃。它似乎只在应用程序强制退出时才会发生,因此不会影响用户。我已在 Feedbackassistant.apple.com 上向 Apple 提交了一张罚单,并鼓励其他人也这样做。
ted*_*ock 11
这不是一个解决方案,但明确表明这是苹果需要修复的错误。从一个干净的示例项目开始,您所需要做的就是提供一个 SKStoreProductViewController,然后强制退出您的应用程序:
import StoreKit
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let storeKitViewController = SKStoreProductViewController()
storeKitViewController.loadProduct(withParameters: [
SKStoreProductParameterITunesItemIdentifier: NSNumber(integerLiteral: 364709193)
])
present(storeKitViewController, animated: true)
// Force quit after presentation to trigger crash
// -[SKStoreProductViewController sceneDisconnected:]: unrecognized selector sent to instance
}
}Run Code Online (Sandbox Code Playgroud)
我已通过反馈助理向 Apple 提交了此信息。
Hus*_*sam 10
以下是Apple框架工程师的解释
此崩溃发生在 iOS/iPadOS 15.7 的公开版本以及种子 4 之前的 iOS/iPadOS 16 种子版本中 [1]。在 iOS 16 的公开版本中不会发生这种情况。崩溃主要发生在应用程序处于后台且即将被操作系统终止时。因此,预计大多数最终用户不会看到这些崩溃。(一个例外是在 iPad 上,其应用程序支持多个场景,并且用户手动终止场景。)您的分析将显示崩溃率增加,但您的客户不应受到此问题的影响。我们正在积极努力解决此次事故。[1] 在这种情况下,您应该更新到最新版本。
来源:https ://developer.apple.com/forums/thread/714464?answerId=729646022#729646022
能够在本地使用相同的堆栈符号重现崩溃,并且下面的代码可以阻止崩溃的发生。该代码创建空函数来处理无法识别的选择器消息,并将此扩展限制为 iOS 15.7:
@available(iOS, introduced: 15.7, obsoleted: 16.0)
@objc extension SKStoreProductViewController {
func sceneDisconnected(_ arg: AnyObject) {}
func appWillTerminate() {}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11019 次 |
| 最近记录: |