rolinger opened a new issue, #288:
URL: https://github.com/apache/cordova-plugin-geolocation/issues/288
# Bug Report
On iOS, when the watchPosition() function times out it causes the
watchPosition() to just stop working. It won't continue or restart.
## Problem
Why the timeout is occurring in the first place is its own debate, but these
are the behaviors I am **consistently** seeing, regardless of iOS device type
(various iPhones) or various simulators - its consistent across all.
1. When there is a timeout, watchPosition() triggers its onError and will
not continue, it just stops. And when I mean stop, I mean its not `cleared`
(as with clearWatch()), but rather it just stops reporting. The watchID still
shows the original instanceID of when `var watchID =
navigator.geolocation.watchPosition(onSuccess,onError,options) ;` was called
the first time.
2. Upon start up, watchPosition() will call three times successfully, and on
the 4th it will fail. I added code to clear the existing ID and restart the
watchPosition() method after each onError timeout. Then _EVERY_ time after
that if times out after 2 successful calls - it timesout on the 3rd call after
each watchPosition() restart
3. I increased the option {timeout: 30000} which had no affect - it just
took longer to finally time out. The relevance of this is that a 3 second or
30 second time out before calling onError has no affect on behavior - its all
the same.
### What is expected to happen?
Regardless of a timeout, the watchPosition() should continue monitoring
location/movement changes.
### What does actually happen?
Mentioned above
## Information
I found this thread regarding this same issue and I think they are right:
https://stackoverflow.com/questions/30989428/apache-cordova-geolocation-watchposition-times-out-on-ios-when-standing-still
My iPhone sits on my desk as I deploy my app to it to test - so its not
moving. So after reading the above Stack thread I picked the phone up off my
desk, while still connected to my Mac, and began waving the phone around. Well
sure as heck, the watchPosition() started firing every second with a slightly
different lat/lon coordinate being reports....it fired 10 to 15 times before I
put it back down on my desk...4 or 5 watchPosition() onSuccess's later, the
phones gps settled down and started reporting the same lat/lon coordinates
again - by the 3rd one, it timed out again. Its hard to get it trigger
onSuccess again, because apparently the `distanceFilter` as mentioned in the
thread only reports a change of more than 5 meters - thats 15+ ft!!! Aside
from writing special code to send gps logging to the server, most people don't
have a 20ft iPhone cable that is going to be long enough to consistently
trigger onSuccess change back to their connected Mac
This tells me there are two problems.
1) **Needs a Solution:** The timeout is happening due to `distanceFilter`
not changing after two or three reporting cycles. It seems the
`distanceFilter` is thinking since there is no change then there is nothing to
report...with nothing to report, watchPosition() times out. The solution is
possibly the one suggested in the thread
2) **A Bug**: When the timeout does happen it is somehow freezing
watchPosition()...its not clearing it or closing it....it just stops.. The
behavior should be that it continues to monitor any changes in the devices
coordinates without having to be restarted again.
### Command or Code
<!-- What command or code is needed to reproduce the problem? -->
### Environment, Platform, Device
Cordova 12
cordova-ios 7.1.1
Xcode 16.2
cordova-plugin-geolocation v5.0.0
## Checklist
<!-- Please check the boxes by putting an x in the [ ] like so: [x] -->
- [ x] I searched for existing GitHub issues
- [x ] I updated all Cordova tooling to most recent version
- [ x] I included all the necessary information above
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]