geteduroam / ionic-app

iOS and Android app for geteduroam
BSD 3-Clause "New" or "Revised" License
16 stars 12 forks source link

Improve discovery selector #17

Open jornane opened 4 years ago

jornane commented 4 years ago

Continuing on #14, we need to look into improving the user experience for selecting their institution from the list, since the list has become really long.

We want to keep the search bar, but we don't want to show the whole institution list right from the start, since it probably won't show useful information from the start.

Our initial idea is that the user should still be presented with a search bar, but instead of the full list of institutions, we can use an IP geolocation API to get the location of the user (country and coordinates, although they will be very imprecise); the app can then show the ~10 nearest institutions within the same country.

The user then gets the choice to do a more precise geolocation through their device, or use the search bar and search for their institution. No geolocation by the OS must be attempted unless the user explicitly presses the button.

When using the search bar, the search code should firstly prioritise prefix matches over more generic string matches (searching for "eva" currently returns "Center RS za poklicno izobrazevanje" over "eduroam Visitor Access (eVA)", and secondly prioritise same-country results, and lastly prioritise institutions closer to the current location.

A quick mockup of what we're looking for:

geteduroam2 001 geteduroam2 006

jornane commented 4 years ago

We have made an API available on https://geo.eduroam.app/geoip

It will return JSON in the form of

{
    "city" : "Trondheim",
    "postal" : "7030",
    "country" : "NO",
    "geo" : {
        "lon" : 10.3961,
        "lat" : 63.424
    }
}

The country should match certain institutions in the discovery, and the geo location should be compared to geo for institutions. For institutions with multiple coordinates, the closest should be used.