Improved UX for Location Permissions

My app connects people locally through local groups, events and places. I have spent the better part of a month working around glide’s various limitations and thanks to the support here I have managed to implement clever workarounds. But this one is a killer for me.

I have a map displays places filtered by distance from the user (using my own filter design). If their location permission is denied then the map will not display. It looks like there is no data and users will assume that I do not have any content or there is a bug.

I am not aware of any way to pro-actively detect this issue and inform the user on how to take action (aka soft opt-in).

Through user testing I have observed that many people either have their browsers location permission turned off entirely or deny location permission instantly without any consideration. This is due to privacy or battery life concerns.

Before requesting location permission, I need to explain/demonstrate why it’s important. And if they deny it, I need to be able to contextually message to the user on how to correct it for their device/os in case it was a mistake.

There are loads of articles on best practices for this, I won’t go into the details.

1 Like

Not sure if you have an onboarding flow or collect location info from your users, but I’ve implemented something similar to the below for the same reasons.

3 Likes

I assume the button does nothing? Or do you perform an operation after the user hits that button to force the app to make a location request?

I just tried create a method to detect if permissions are currently granted or denied but it caused the app to hang. I attempted several variations on the logic but nothing worked. It appears that the value stored in a distance calculation is something that can’t be checked using glide’s logic. It’s probably a null value or something. Maybe even easy for Glide to fix.

image

1 Like

Screenshot is an app used for inspiration. When you tap that button, you get the standard “Allow app to use your location?” In my app, on the initial screen I display results based on data the user provided but give them the option to “use my location” (button > link to screen). There’s messaging to distinguish both and highlight the benefit of the second.

1 Like

Gotcha. So you inspired me to change my first time user experience to establish a persons location the first time they try to use my location map.

After an address is entered manually or automatically via location services, the button is clickable and this screen is never presented again (via a hidden tab like my sign up on-boarding flow).

The last thing I need to figure out is the edit address functionality. This is a new screen that allows you to change the current address from the map tab in a similar way to when you first set it. It’s behaving oddly right now.

3 Likes

Looking good!

1 Like

Hello, how do you have the distance filters configured?

i thing work with public app in that way nice idea

OK, here goes:

As you see above, my app allows you to filter Places by distance from your search location and category.

  • Places have pre-defined categories (I used to call them tags):

  • A formula is used to create a “Tag Filter” column:

  • The formula looks something like this:

={"Tags";ARRAYFORMULA(left(IF(J2:J=true(),"Bashing,","")&IF(L2:L=true(),"Drag Racing,","")&IF(M2:M=true(),"Drifting,","")&IF(N2:N=true(),"Hobby Store,","")&IF(O2:O=true(),"Track,","")&IF(K2:K=true(),"Crawling,",""),len(ARRAYFORMULA(IF(J2:J=true(),"Bashing,","")&IF(L2:L=true(),"Drag Racing,","")&IF(M2:M=true(),"Drifting,","")&IF(N2:N=true(),"Hobby Store,","")&IF(O2:O=true(),"Track,","")&IF(K2:K=true(),"Crawling,","")))-1)&", All Categories")}

  • Lastly, each place is tagged as being in one or more distance bands (30, 180, all). If a location is 170 miles away, it qualifies as being in “All” distances and within “180 miles”.

  • Now to the app. The user selects filters

  • And the choices are stored here:

  • This filter is applied to the map/list:

3 Likes

I have been trying to do this in glide but with more filters and when I think that I already have it something happens and it does not work as expected hahaha thanks for sharing

resolved in glide :grinning:

Hi @Mauronic just wanted to thank you for taking the time to drop so many knowledge bombs in this thread. Much appreciated.

And thanks @alfonso_ayala for heads up that it’s been fixed.