Etusivu/Oppaat/Kehittäjät
Kehittäjät

Pyörien saatavuus reaaliajassa: miten näyttää se sovelluksessa?

Näytä pyörien saatavuus ROOTE-rajapinnalla: aikaleimat, tuoreus, tuntemattomat arvot, päivitykset ja vanhentuneet tiedot sovelluksessasi.

By ROOTE·7 min lukuaika
Pyörien saatavuus reaaliajassa: miten näyttää se sovelluksessa?
Havaittu saatavuus sen kontekstissa.

Tärkeimmät asiat sekunneissa

Esitä saatavilla oleva määrä sen tuoreuden, aikaleimojen ja pyörän noutoehtojen kanssa. Tuntematon arvo pysyy tuntemattomana; vanha havainto ei muutu reaaliaikaiseksi vain siksi, että sovelluksesi sai sen juuri nyt.

Näyttääksesi pyörien reaaliaikaisen saatavuuden sovelluksessa yhdistä palautettu määrä sen tuoreuteen ja ajoneuvon noutomahdollisuuksiin. Havainto kuvaa, mitä lähde tiesi hetkellä; se ei takaa, että pyörä on yhä saatavilla perille saapuessa.

ROOTE-liikkumissopimus erottaa asemat, yksittäiset ajoneuvot ja niiden tilat. Rajapinnan tulee tulkita nämä erot ilman, että se sekoittaa tuntematonta arvoa, tyhjää asemaa tai tilapäisesti poissa olevaa lähdettä.

Erotetaan asema ja yksittäinen ajoneuvo

Asema voi näyttää pyörien ja palautuspaikkojen lukumäärät. Yksittäisellä ajoneuvolla on käytettävyystila ja muita mahdollisia tietoja. Vältä aseman laskemista pyöräksi tai samojen varastojen laskureiden yhteenlaskemista.

ROOTE-mobiilidatansiirrossa (DTO) availability.bikes ja availability.docks voivat olla tuntemattomia. Voimanlähde- tai akun kenttiä tulisi näyttää vain, jos ne ovat olemassa ja tulkitaan sopimuksen mukaisesti.

ROOTE OpenAPI -sopimus

Tuoreuden ja aikaleimojen lukeminen

KenttäTulkinta
freshness.stateIlmoitettu tila: fresh, stale, unknown tai static
freshness.source_updated_atLähteen päivityspäivämäärä, jos tiedossa
freshness.received_atVastaanottopäivämäärä, sopimuksen mukaan ilmoitettu
freshness.expires_atVoimassaolon päättymispäivä ilmoitettu, jos tiedossa
availability.bikesTunnettu määrä tai tuntematon arvo
pickup.enabled ja pickup.stateTietoa pyörän noudosta asemalta

Kutsusi aika ei automaattisesti ole havaintoaika. Klo 10 vastaanotettu tulos voi sisältää lähteen päivityksen klo 9.45. Älä näytä ”päivitetty nyt” pelkän rajapinnan vastaanottoajan perusteella.

Suunnittele erilliset näyttötilat

Vastaanotettu tietoNäyttötapaus
Tunnettu määrä ja tuore dataHavaittu määrä ja ajallinen viittaus
Määrä nollaEi havaittuja pyöriä, aikatieto mukana
Määrä nullTuntematon saatavuus
Stale-tila tai vanhentunut aikarajaVanha data; ehdota päivitystä
pickup.enabled=falseNouto ei saatavilla, vaikka laskuri olisi positiivinen
Hakutieto virheellinenSaatavuus väliaikaisesti poissa, ei muunneta nollaksi

Älä luokittele unknown- tai static-tilaa tuoreeksi. Asematieto voi olla vakaa, vaikka laskuri vaihtuu nopeasti. Säilytä myös vastauksen edellyttämät varoitukset ja määrittelyt.

Esimerkki normalisoinnista ennen näyttöä

Seuraava funktio tuottaa käyttötilan jo ROOTE-mallin mukaisesti validoidusta asemasta. Se ei ole täydellinen vastaustarkistin. Näkyvien tekstien tulee tulla käyttöliittymän käännösavaimista.

function availabilityView(station, now = Date.now()) {
  const freshness = station.freshness;
  const expiresAt = freshness.expires_at
    ? Date.parse(freshness.expires_at) : null;
  const expired = expiresAt !== null &&
    Number.isFinite(expiresAt) && expiresAt <= now;
  if (station.pickup.enabled === false ||
      station.pickup.state === 'unavailable_now') {
    return { state: 'pickup_unavailable', count: null };
  }
  if (expired || freshness.state === 'stale') {
    return { state: 'stale', count: null };
  }
  const count = station.availability.bikes;
  if (freshness.state !== 'fresh' || count === null ||
      !Number.isFinite(count) || count < 0) {
    return { state: 'unknown', count: null };
  }
  return {
    state: count === 0 ? 'empty' : 'observed', count,
    sourceUpdatedAt: freshness.source_updated_at,
    receivedAt: freshness.received_at,
    pickupState: station.pickup.state
  };
}

Vaikka tila olisi observed, älä muuta pickupState=unknown noudoksi varmaksi. Laskuri pysyy havaintona. Näytä noutotiedot, jos tuotteesi auttaa käyttäjää valitsemaan aseman.

Päivitä ilman turhia kutsujen määrän lisäämisiä

Säädä päivitystiheys julkaistun vanhentumisajan, palvelun ehtojen ja käyttäjän toiminnan mukaan. Ryhmittele toistuvat pyynnöt, vältä taustakutsuja passiivisella sivulla ja peruuta korvaavat haut.

Paikallinen välimuistiviive ei todista lähteen tuoreutta. Virheen jälkeen voit säilyttää viimeisen päivätyn havainnon, jos käyttöliittymä esittää sen selvästi vanhentuneena. Älä poista tätä eroa ensimäisen onnistuneen haun jälkeen, jos lähde on yhä stale-tilassa.

Ymmärrä yhteys GBFS:ään

GBFS kuvaa yhteiskäyttöliikenteen palvelut ja niiden julkaistut tilat. Suora integraatio vaatii tiedostojen, version ja aikaleimojen tulkintaa. Käytä vakioitua rajapintaa; älä lisää GBFS-kenttää, jota ei vastauksessa ole.

Valitse GTFS, GTFS Realtime ja GBFS välillä

Testaa lukijan harhaanjohtavat tilanteet

Kokeile todellista nollaa, tuntematonta arvoa, vanhentunutta aikarajaa, poissa olevaa noutoa ja virhettä pätevän tuloksen jälkeen. Tarkista myös aikavyöhykkeiden näyttö. Positiivinen laskuri ei saa näyttää ”pyörä varattu” ja saatavuuden poissaolo ei saa näyttää tekaistua nollaa.

Käsittele tyhjät vastaukset ja virheet

Sovella sääntöjä tekoälyavustajassa

Käyttäjäopas pyörän löytämiseen

KehittäjilleROOTE Mobility API

Liikkumista yhdestä pisteestä.
Suoraan sovelluksessasi.

  • Hae
    lähiympäristöstä
  • Pääsy
    liikennetietoihin
  • Upota
    sovellukseesi

Mene kartasta tietoihin: löydä lähellä olevat liikennepalvelut ROOTE-API:n avulla.

Usein kysytyt kysymykset

Takaaanko positiivinen määrä pyörän perille saapuessa?

Ei. Se kuvaa havaintoa, joka voi muuttua haun ja saapumisesi välillä.

Voiko nullin korvata nollalla?

Ei. Null tarkoittaa tuntematonta arvoa; nolla on tunnettu määrä, jolla on eri merkitys.

Pitäisikö päivittää muutaman sekunnin välein?

Käytä voimassaolo-ohjeita, palvelun rajoja ja käyttöliittymän vaatimuksia. Satunnainen päivitystiheys ei takaa tuoreempaa lähdettä.

Miltä kuulostaisi tutkia ympäristöäsi?

Tutki kotikulmiasi ROOTEn avulla ja löydä tiedot, joita tarvitset matkasi suunnitteluun.

Tutki ROOTE-karttaa ↗