[ 
https://issues.apache.org/jira/browse/CB-5753?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14180117#comment-14180117
 ] 

Garth Gutenberg commented on CB-5753:
-------------------------------------

Here's what I do to reliably reproduce the problem (though it's a pain)...

In the iOS Simulator, set the Location to City Run.  Create an app that grabs 
the position via navigator.geolocation.watchPosition().  Give the app *Required 
background modes* : *App registers for location updates* in the plist.  Deploy 
to the simulator, connect the Safari debugger, and background the app.  Within 
8-12 mins, an error will be thrown and the 2 lines that I commented out are 
processed.

There's probably a better way to cause an error, but that worked 100% of the 
time in my testing.  It also happens on physical devices after the app is 
backgrounded for 8-12 mins.

> iOS: CDVLocation locationManager didFailWithError
> -------------------------------------------------
>
>                 Key: CB-5753
>                 URL: https://issues.apache.org/jira/browse/CB-5753
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Geolocation
>    Affects Versions: 2.9.0, 2.9.1
>         Environment: iOS
>            Reporter: Martin Robin
>            Assignee: Shazron Abdullah
>              Labels: patch
>
> The delegate handler for didFailWithError appears to have a couple of 
> issues...
> According to the 
> [documentation|https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/CLLocationManagerDelegate/CLLocationManagerDelegate.html#//apple_ref/occ/intfm/CLLocationManagerDelegate/locationManager:didFailWithError:],
>  {quote}If the location service is unable to retrieve a location right away, 
> it reports a kCLErrorLocationUnknown error and keeps trying. In such a 
> situation, you can simply ignore the error and wait for a new event.{quote}
> The handler within CDVLocation does not however take this into account and as 
> a result if this error is raised it causes the location manager to be shut 
> down without any warning.
> Within the same handler, there appears to be code to send a notification back 
> to the JavaScript by way of the onError function. This notification is never 
> received in the JavaScript so the error cannot be handled (by calling 
> clearWatch and then restarting with a call to watchPosition for example).
> The first problem is (I believe) fairly easily resolved; simply ignoring the 
> error (though possibly notifying the JavaScript) would suffice.
> I have no idea how to resolve the second problem. I have tried tracing the 
> code and it appears to call commandDelegate::sendPluginResult (via 
> returnLocationError) but the onError function in the (my) JavaScript does not 
> receive the error. I do not understand how the plug-in model works enough to 
> be able to follow up any further for myself.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to