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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions