Leaflet-locatecontrol 插件:ios 应用在运动和方向弹出权限时崩溃

Leaflet-locatecontrol plugin: ios app crash on motion and orientation popup permission

我正在使用这个 Leaflet 插件来允许用户在地图上使用地理定位。它使用浏览器 API,例如运动和地理定位。在 android 应用程序版本上,它运行良好,我的代码在使用 Capacitor 设置插件之前检查并需要地理定位许可。在 ios 应用程序版本上,应用程序与以前一样使用 Capacitor 检查,它需要显示 popup 的运动和方向访问。然后应用程序崩溃显示此异常:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Completion handler passed to -[CAPWebViewDelegationHandler webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:] was not called' terminating with uncaught exception of type NSException

我尝试在 Capacitor XCode Pods 文件夹和 Capacitor Github 文件夹中寻找 CAPWebViewDelegationHandler,但没有任何显示。

我还尝试使用本机 API 来请求运动和方向许可,例如: DeviceMotionEvent.requestPermission() 它启动了相同的弹出窗口,但这次没有发现崩溃。而是显示地理定位错误,表示 origin 没有地理定位访问权限。

我在 XCode 上的应用信息如下所示:App info,我在其中添加了用于运动和位置描述的隐私密钥。

这是我的 Info.plist 文件:Info.plist

我正在使用:

我是 ios 使用 ionic 进行开发的新手,所以如果有人能给我一些建议,那就太好了。

我终于通过自定义插件 capacitor geolocation. You can find the github repo here 解决了这个问题。