过去,我能够在 iPhone 上运行 Ionic Cordova 应用程序并将其插入 Mac,然后在 Mac 上打开 Safari 并转到 Develop -> PHONE_NAME -> localhost 来检查我的应用程序。
目前,当我进入“开发”菜单时,会显示 PHONE_NAME,但是该应用程序不会显示为选项。
如果我在手机上打开 Safari,它会显示为一个选项,所以我知道它可以工作,只是不适用于我的 Ionic 应用程序。
我看到 cordova-ios 6.3.0 提到他们修复了一个错误:
此版本包含一个修复程序,允许使用以下命令检查 WebView 内容 最新的 iOS 和 Xcode 版本。它还修复了 iOS 16 的错误和问题 使用 NodeJS 18。 块引用
https://cordova.apache.org/announcements/2023/04/15/cordova-ios-release-6.3.0.html
但是更新到cordova-ios 6.3.0后问题仍然存在。
还有什么想法可以尝试吗?
Mac 操作系统版本:Ventura 13.4
iPhone iOS 版本:16.5
xCode 版本:14.3.1
经过更多研究后,问题似乎已在 cordova-ios 上得到解决,但是 ionic 使用它自己的 webkit。
因此修复必须应用于 Ionic 的插件: https://github.com/ionic-team/cordova-plugin-ionic-webview
我发现该插件已经有一个带有修复的拉取请求: https://github.com/ionic-team/cordova-plugin-ionic-webview/pull/677
我能够通过分叉主分支、应用更改然后更新我的 package.json 来在本地为我工作,如下所示:
"cordova-plugin-ionic-webview": "github:< YourGithubUsername >/cordova-plugin-ionic-webview"
在 CDVWKWebViewEngine.m 添加以下代码即可工作
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 160400
// With the introduction of iOS 16.4 the webview is no longer inspectable by default.
// We'll honor that change for release builds, but will still allow inspection on debug builds by default.
// We also introduce an override option, so consumers can influence this decision in their own build.
if (@available(iOS 16.4, *)) {
#ifdef DEBUG
BOOL allowWebviewInspectionDefault = YES;
#else
BOOL allowWebviewInspectionDefault = NO;
#endif
wkWebView.inspectable = [settings cordovaBoolSettingForKey:@"InspectableWebview" defaultValue:allowWebviewInspectionDefault];
}
#endif