我正在尝试使用xcode模拟器,但在启动时始终出现此错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<WKWebViewConfiguration 0x7f9dce800d40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _requiresUserActionForMediaPlayback.'
我尝试卸载/重新安装cordova-plugin-ionic-webview,并用尽了我可以在SO上找到的所有解决方案,但它们没有任何作用。
这是一个离子Cordova项目,因此我无法更改xcode中的任何代码,因为下次我构建该项目时,它将被覆盖。任何其他解决方案将不胜感激。
我不确定是否相关,但是当我在命令行上执行android ionic仿真时,它可以工作,但是ios emulation没有,并且出现此错误:
/Users/path-to-project/platforms/ios/build/emulator/project.app/Info.plist file not found.
问题在于ios尚未在ios 1下创建任何构建文件夹,这可能就是为什么在其中找不到任何内容的原因。我认为我已将问题跟踪到输出结果上方的以下消息:
CONFIGURATION_BUILD_DIR = /Users/path-to-project/platforms/ios/build/emulator
SHARED_PRECOMPS_DIR = /Users/path-to-project/platforms/ios/build/sharedpch
但是,我不知道这些配置在哪里设置。有谁知道ionic从哪里获得这些配置的?
但是我想到一个问题:如果将CONFIGURATION_BUILD_DIR设置为此位置,为什么不在此处创建构建目录?
答案 0 :(得分:6)
这是一个笨拙而又晦涩难懂的东西,它花了很长时间才弄清楚。
该溶液用于离子。 Xcode有很多“解决方案”,但是它们不能用于离子项目,因为ios文件夹中的任何代码更改都将在下次编译时覆盖。
提示在消息中:_requiresUserActionForMediaPlayback。但是,消息的另一部分提到WKWebView,这是一条红色的鲱鱼,因为它实际上与问题无关。
实际问题出在/cordova-plugin-background-mode/src/ios/APPBackgroundMode.m文件中的cordova-plugin-background-mode插件中。在类底部的swizzleWKWebViewEngine方法的末尾,更改:
forKey:@"_requiresUserActionForMediaPlayback"];
收件人:
forKey:@"requiresUserActionForMediaPlayback"];
即删除下划线。是的,确实如此简单,这浪费了我一生的日子。
这是Github上提到的错误:https://github.com/katzer/cordova-plugin-background-mode/issues/381。截至2018年10月9日,该插件已两年未更新,并且该错误在npm中仍未得到纠正,因此您必须自己进行更改,直到更改为止。