Skip to content

iOS 14: Changing authorization in Settings (suspended App) fails to transmit PositionError #226

@katzlbt

Description

@katzlbt

Problem

Changing authorization in Settings to denied (when the App is suspended) fails to transmit PositionError to the WebView
(found this while testing #224 as I noticed the PERMISSION_DENIED message was not transmitted to the WebView)

What is expected to happen?

navigator.geolocation.watchPosition() the error handler is called with PositionError.PERMISSION_DENIED

What does actually happen?

navigator.geolocation.watchPosition() the error handler is not called at all.

Diagnosis

  1. - locationManager: didFailWithError: is correctly called, but it is called while the app is in the background!
  2. [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:posError] executes without error
  3. The CDVWebView does not seem to receive anything or JS does not work while in background
  4. CDVWebViewEngine shouldReloadWebView:: is executed after the app has resumed (not sure what that does)
  5. geolocation is stopped without notice/error to the web-view code as errors are not delivered

This is quite difficult to fix.
Is there a way to send command-results delayed after the app resumes?

Environment, Platform, Device

cordova-plugin-geolocation HEAD, iOS 14

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions