У меня есть приложение Xamarin.Forms Prism. Он использует WKWebView в проекте ios для отображения веб-страницы. На этой странице, помимо разрешения от iOS, также отображается всплывающее окно разрешения из браузера. Кто-нибудь может помочь мне с этим? Это происходит только в iOS.
Я хотел бы избежать всплывающего окна из браузера и сохранить только всплывающее окно разрешения, созданное системой iOS.
Изменили ли вы функции безопасности и конфиденциальности приложения, обязательно добавьте NSCameraUsageDescription в Info.plist. Вы можете обратиться к документу: Функции безопасности и конфиденциальности iOS
Да. Он уже добавлен в Info.plist.
Это похоже на изменение разрешений WKWebView, вы можете проверить документацию Apple: Управление микрофоном и камерой. В xamarin вам нужно использовать его в вашем рендерере, обратитесь к коду this.SetCameraCaptureState(WKMediaCaptureState.None, null);
Это тоже, кажется, не работает. Можете ли вы дать какой-либо другой метод ??
В разделе «Вопросы и ответы» опубликована та же тема «Как исправить всплывающее окно с двойным разрешением в веб-представлении xamarin ios», давайте сосредоточимся на этом.
Да. В этой теме был опубликован ответ, и он помог мне ... Большое спасибо за вашу помощь.
Эта ветка помогла мне решить эту проблему. Реализуйте класс, унаследованный от WKUIDelegate.
открытый класс CustomWebViewDelegate : WKUIDelegate { [Экспорт ("webView:decideMediaCapturePermissionsForOrigin:initiatedByFrame:type:decisionHandler:")] public override void RequestMediaCapturePermission (WKWebView webView, источник WKSecurityOrigin, кадр WKFrameInfo, тип WKMediaCaptureType, обработчик решения Action) { пытаться { обработчик решения (WKPermissionDecision.Grant); base.RequestMediaCapturePermission (веб-представление, источник, фрейм, тип, обработчик решений); } поймать (Исключение e) { } } }
Добавьте этот оператор в класс Renderer.
webView.UIDelegate = новый CustomWebViewDelegate();
Вы сказали: «кроме разрешения от iOS», какие разрешения вы дали? Вы имеете в виду, что браузер всегда будет запрашивать разрешение камеры, верно? Хотите избежать всплывающих окон с запросом разрешения?