Skip to content

Unable to get location information in WKWebView on iOS 16.4+ #998

Open
@OS-ricardomoreirasilva

Description

@OS-ricardomoreirasilva

Bug Report

Problem

What is expected to happen?

This is the behaviour occurring on iOS versions lower than 16.4, which is the intended one.

A popup appeared twice when retrieving location information for the first installed app. You can get location information by executing the navigator.geolocation.getCurrentPosition method on a web page opened in WKWebView. The first time, a popup location permissions for the app's domain appeared in a popup a and second requesting permission for Safari (WKWebView) location information was displayed

What does actually happen?

This is what's happening on 16.4+.

The permission request popup for Safari (WKWebView) is not displayed, and only the permission request for the app domain is displayed in a popup. After enabling popups and running the navigator.geolocation.getCurrentPosition method does not work and I am unable to get the location. Debug log reports the following error message: … ** whose view is not in the window hierarchy**.

Information

This appears to be an issue occurring due to an update Apple introduced for WKWebView on version 16.4, as a couple of threads are available online with users facing the same issues. This is occurring on CDVWKInAppBrowser.m on the show:withNoAnimate: method.

The issue seems to occur when a view controller is presented by another view controller and it's suggested that replacing presentViewController by pushViewController can temporarily fix the issue. On the InAppBrowser plugin, this is not achievable as the view to present is a CDVInAppBrowserNavigationController and UINavigationControllers can't be pushed.

This is severely impacting our customers, with no fix found until now.

Environment, Platform, Device

This happening with every version working with iOS 16.4+.

Checklist

  • I searched for existing GitHub issues
  • I updated all Cordova tooling to most recent version
  • I included all the necessary information above

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions