2016-11-14 2 views
1

У меня есть приложение HTML5/jquery-mobile для кросс-платформенной поддержки. У меня Android с WebView и iOS с UIWebView, который указывает на мой сайт. Мне нужны услуги геолокации, и вы можете передать разрешение устройства с Android на веб-приложение с помощью WebView ChromeClient.HTML5 Geolocation для iOS и Android

webView.setWebChromeClient(new WebChromeClient(){ 
    @Override 
    public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback){ 
     callback.invoke(origin, true, false); 
    } 
}); 

В iOS такой вещи нет. Каждый раз, когда я использую приложение, я получаю два диалога запроса разрешения от приложения iOS и веб-приложения. Я не использую phonegap/cordova и не нуждаюсь в них. Эта проблема натолкнула меня на несколько недель, и все остальные, у кого есть эта проблема, используют phonegap/cordova.

navigator.geolocation.getCurrentPosition(function(position){ 
    // geolocation logic 
} 

Любая помощь будет очень признательна.

+0

У меня тоже такая же проблема. Вы нашли решение? –

+0

Я на самом деле закончил использовать службы геолокации ios, предоставляемые устройством, и отправил коорды на мой javascript через UIWebview – thailey01

+0

Но в моем случае я вставляю сторонний веб-сайт в свой веб-просмотр. какие-либо предложения? –

ответ

1

Вы не можете избежать этого предупреждения в UIWebView AFAIK. Вы можете использовать API местоположения iOS, чтобы получить текущее местоположение и передать его на веб-страницу. Существует много способов сделать это:

  • UIWebView stringByEvaluatingJavaScriptFromString («window.iosLocation = 43,3, -79,9»), на странице можно проверить UA, чтобы увидеть, если это следует ожидать, что это будет установлено, или это может подождать в течение 1-2 секунд после завершения загрузки и если эта опора не установлена, используйте геометрию HTML5. Вы ввели бы это на UIWebViewDelegate.webViewDidFinishLoad
  • есть ваша страница попробуйте перезвонить IOS машинный код, хотя это намного сложнее, чем выше (требуется инъекция/переопределение на странице загрузки JS)
  • Установить куки для вашего домена приложения начало, которое содержит местоположение, затем попробуйте прочитать куки-файл на странице, см. здесь, как установить файл cookie: How to manage cookies with UIWebView in Swift
+0

Я смотрел первый метод, как легко это реализовать? – thailey01

+0

Кроме того, я перешел на WKWebView. Является ли функциональность одинаковой? – thailey01

+0

установить экземпляр делегата UIWebView к экземпляру класса, как: 'класс MyDelegate: UIWebViewDelegate { Func webViewDidFinishLoad (WV: UIWebView) { \t // сделать основной запрос о местоположении, чтобы захватить место \t // затем вводят с помощью JS в веб-просмотра } } ' –

Смежные вопросы