On Android we have 3 levels of location settings:
Deviuce level: location on/off
App prmissions: ocation on/off
In-App setting
We tested
All 2^3 = 8 combinations of these
In the main app screen, and during the main onboarding process
During on boarding we also tested:
Allow/deny when asked for location permissions
“Don’t ask again” as an option after denying location permissions
Summary of problems found (internal identifiers used until we determine whether to raise JJira issues for all of these).
SAF-231: Green “No known contact” is shown even when no HA is configured. The screen should be Greay and direct the user to configure an HA.
LOC-1: The code assumes that if the App cannot access location this is an App permissions issue. It might not be. It might be that Location is disabled at the Device level. When this happens the APp confusingly keeps directing the user to an App permissions screen that already has the right settings, and never helpd them to find the actual Device-level setting to turn location on.
LOC-2: In states where the In-App setting is “on”, but App location permissions are denied OR location is disabled at Device scope, the “Dashboard” shows “Location Active” with a green check. This can be a source of confusion in several scenarios (ee details below).
LOC-3: During onboarding, if I choose to “Enable Location” but then deny the App location permissions, the in-app setting gets set of “off”, which makes the later flow for enabling location complex& unintuitive. In this scenario it seems it would be better to set the app setting to “on”.
LOC-4: At the end of Onboarding, the “all finished” screen does not correctly reflect the Device-level location settings, so it can show a green tick, even though location is not properly enabled, and the immediately following main screen shows Red: Unknown.
LOC-5: Some inconsistency in language: location history / location data / location inactive; Settings screen / Dashboard
LOC-6: Clumsy wording: “enable the app to access your location”
Other notable points:
In general, the handling of the case where the user denies location access to the App and chooses “don’t ask again” is very well handled. Even after this, it remains easy for the user to navigate to the correct App permissions again. Great work!
Detailed Testing Notes
So 2^3 = 8 combinations of these to test. First we test the main screen
Settings | Observed | Expected? |
---|---|---|
Device: on | Green: “No known contact” | This would be correct if I had an HA configured. But I don’t - the screen should tell me I haven’t selected a HA, Known bug SAF-231 |
Device: on | Red: Unknown - tells me to enable location history in the settings screen. | All as expected, but terms are highly inconsistent. (LOC-5) Settings screen / Dashboard |
Device: on | Red: Unknown - tells me to “enable the app to access your location” | As expected, but wording is clumsy. (LOC-6) or “enable location access for the app” |
Device: on | Red: Unknown - tells me to enable location history in the settings screen. Enable Location Data button takes me to “Dashboard” where I can change “Location Insctive” | This works brilliantly - gets both settings enabled in one easy flow! |
Device: off | Red: Unknown - tells me to “enable the app to access your location”
But when I get there I see the App already has location permissions, so not clear what to do next. | In this case, the app needs to direct me to the Device level location on/off setting, not the App Permiession, which is already correct. (LOC-1) |
Device: off | Behaviour is the same as case above: | This isn’t good enough - it gets the App setting correct, but it doesn’t help me get the Location service enabled at Device scope. (LOC-1) |
Device: off | Behaviour is the same as case above: Device: on | I get guided to fix the App permissions (good), but it’s not enough. (LOC-1) Correcting the App permissions does not remove the Red status, and it’s not clear how to do it. |
Device: off | Behaviour is the same as case above: Device: on | I get guided to fix the App setting & permissions (good), but it’s not enough. (LOC-1) Correcting theses does not remove the Red status, and it’s not clear how to do it. |
Other observations:
(LOC-2) In states where the In-App setting is “on”, but location permissions are denied OR location is disabled at App scope, the “Dashboard” shows “Location Active” with a green check
This is an accurate reflection of the in-app setting.
But it is not an accurate reflection of the overall location capabilities of the app.
The contrast between the green check on this screen, and the red Unknown status on the main screen could be a cause of user confusion.
Now the same as above, but with the settings configured before the install of the app. “Device” setting indicates
Location Settings & Choices | Observed | Expected? |
---|---|---|
Device: on | “All finished” screen shows a green tick for location access. Main screen then shows Green | As above, this should be greay with direction to configure an HA. Known bug SAF-231 |
Device: on | After pressing “Deny” I am routed back to the same screen until I press “Accept”, or “Skip this step”. | Behaviour seems good. |
Device: on | “All finished” screen shows a red cross for location access. | Having clicked “Enable Location”, then “Debny” and “Don’t ask again”, I would expect: It seems that in this flow we don’t set the In-App setting to on during initial setup.. I think we should. (LOC-3) |
Device: on | “All finished” screen shows a red cross for location access. Main screen shows Red: Unknown. | All as expected. |
Device: on Later, “Skip” when prompted. | “All finished” screen shows a red cross for location access. Main screen shows Red: Unknown. I am then directed to the dashboard to enable location, and then to the app settings. | All good except that it’s slightly odd to see “Locatioon active / green tick” on the dashboard when the main screen still shows Red: Unknwon. (LOC-4) |
Device: off | “All finished” screen shows a green tick for location access. | I should not see a green tick for location access. (LOC-4) |
Device: off | “All finished” screen shows a red crossfor location access. Main screen then shows Red Unknown, and asks me to Enable Location Data. | As expected given notes above, nothing ever routes me to the actual settings screen to enable Location on the device. (LOC-1)_ |
(there are several more “Device: off” cases, but until we put in some basic implemenntation to handle Device location being off, it’s not worth testing extensively. Very unlikely to turn up anything new.