cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Garth Gutenberg (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-5753) iOS: CDVLocation locationManager didFailWithError
Date Wed, 22 Oct 2014 16:14:34 GMT

    [ 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: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message