Operating system Windows and macOS (Fuse version 1.2.1 on both)
It seems like GeoLocation.getLocation()
isn’t working properly when executed on iOS. I am using the example from the documentation as example.
Expected behaviour
(On both Android and iOS)
-
GeoLocation.getLocation()
is triggered in code at app-launch. - App will ask for permission to use location at app launch.
- User accepts the permission.
- Timeout-location text is filled in the app.
- User clicks “Start Continous listener”-button
- Continous listener starts and app detects changes and fills the Continous text.
Experienced behaviour
(Android)
- Same as expected
(iOS)
-
GeoLocation.getLocation()
is triggered in code at app-launch. - Nothing happens in the app.
- User clicks “Start Continous listener”-button
- NOW user is asked for permission to use location.
- Continous listener starts and app detects changes and fills the Continous text.
Example code added for convienience. Practically identical to example-code in the documentation .
<App>
<JavaScript>
var Observable = require("FuseJS/Observable");
var GeoLocation = require("FuseJS/GeoLocation");
// Immediate
var immediateLocation = JSON.stringify(GeoLocation.location);
// Timeout
var timeoutLocation = Observable("");
var timeoutMs = 5000;
GeoLocation.getLocation(timeoutMs).then(function(location) {
timeoutLocation.value = JSON.stringify(location);
}).catch(function(fail) {
console.log("getLocation fail " + fail);
});
// Continuous
var continuousLocation = GeoLocation.observe("changed").map(JSON.stringify);
GeoLocation.on("error", function(fail) {
console.log("GeoLocation error " + fail);
});
function startContinuousListener() {
var intervalMs = 1000;
var desiredAccuracyInMeters = 10;
GeoLocation.startListening(intervalMs, desiredAccuracyInMeters);
}
function stopContinuousListener() {
GeoLocation.stopListening();
}
module.exports = {
immediateLocation: immediateLocation,
timeoutLocation: timeoutLocation,
continuousLocation: continuousLocation,
startContinuousListener: startContinuousListener,
stopContinuousListener: stopContinuousListener
};
</JavaScript>
<StackPanel>
<Text>Immediate:</Text>
<Text Value="{immediateLocation}" />
<Text>Timeout:</Text>
<Text Value="{timeoutLocation}" />
<Text>Continuous:</Text>
<Text Value="{continuousLocation}" />
<Button Text="Start continuous listener" Clicked="{startContinuousListener}" />
<Button Text="Stop continuous listener" Clicked="{stopContinuousListener}" />
</StackPanel>
</App>
{
"RootNamespace":"",
"Packages": [
"Fuse",
"FuseJS",
"Fuse.GeoLocation"
],
"Includes": [
"*"
]
}
It was also discovered trough discussion on Slack that your example-project on git is outdated. I would reccomend removing git-examples and only refer to documentation-exampels or visa versa.
I also find it wierd that the permission-dialoge pops up when you click the start button, but if you attempt to execute the very same function in code nothing happens…