Google truer med å fjerne apper med tilgjengelighetstjenester fra Play-butikken

Google sender e-poster som advarer utviklere om ikke å bruke tilgjengelighetstjenester utenfor tiltenkt bruk, ellers vil appene deres bli fjernet fra Play-butikken.

Oppdater: LastPass har nettopp svarte til denne nyheten og sier at det vil være "ingen umiddelbar effekt" for deres Android-apper. Hvorvidt dette betyr at andre søknader vil bli gitt lempelse eller ikke, gjenstår å se.

Noen av de mest innovative applikasjonene i Play-butikken bygger på å bruke APIer på måter som Google aldri hadde tenkt. Det er apper som kan tilordne volumtastene dine på nytt for å hoppe over musikkspor, ta opp og spille av berøringsinndata på nettsider eller spill, og til og med gi alternative navigasjonstaster slik at du kan bruke hele enheten skjerm. Alle disse eksemplene som jeg nettopp har nevnt, er avhengige av Androids tilgjengelighets-APIer. Men det kan snart endres, ettersom Google Play Store-teamet sender ut e-poster til utviklere som forteller dem at de kan ikke lenger implementere tilgjengelighetstjenester med mindre de følger Googles retningslinjer.


Hva er en tilgjengelighetstjeneste?

For å forstå hvorfor dette er viktig, må vi først forklare hva tilgjengelighet er i forhold til Android. Generelt refererer tilgjengelighet til å gjøre en Android-app mer tilgjengelig for brukere med visse funksjonshemminger, for eksempel de som er synshemmede. Selv om det er i alle utvikleres beste å gjøre appene deres mer tilgjengelige for brukere med funksjonshemminger, er det en spesiell klasse med applikasjoner som er utviklet for å forbedre brukervennligheten til alle Android-apper for brukere med funksjonshemninger. Disse kalles tilgjengelighetstjenester.

En tilgjengelighetstjeneste, ofte referert til som a11y, er en app som systemet kan mate viss informasjon til avhengig av hva arrangementer Tilgjengelighetstjenesten registrerer seg for å lytte etter. En app som ønsker å implementere en tilgjengelighetstjeneste må legge til android.permission.BIND_ACCESSIBILITY_SERVICE tillatelse til AndroidManifest-filen slik at bare systemet kan binde seg til appens tjeneste.

For eksempel hvis en tilgjengelighetstjeneste er bygget for å lytte etter TYPE_VIEW_CLICKED hendelser, vil den tjenesten motta informasjon fra systemet om eventuelle knapper som brukeren måtte trykke på. En tilgjengelighetstjeneste kan også reagere på og konsumere visse bevegelser og KeyEvents før andre apper mottar dem. Til slutt kan en tilgjengelighetstjeneste også injisere visse KeyEvents, for eksempel knappen for tilbake, delt skjerm eller nylige apper.

Dermed kan tilgjengelighetstjenester være ekstremt kraftig og nyttig. Flere av de mest populære, innovative applikasjonene i Google Play-butikken er avhengige av a11y for å utføre sine oppgaver. Her er bare noen av de få eksemplene jeg kom opp med på toppen av hodet mitt:

  • AutoInput - avskjære KeyEvents og utføre trykk/sveip-bevegelser
  • Button Mapper - avskjære KeyEvents og tilordne dem til andre KeyEvents
  • Greenify - automatisk dvalemodus for apper ved å tvinge dem til å lukke dem før skjermen slås av
  • Inntasting+ - oppdage når tastaturappen er åpen for å vise den flytende handlingsknappen
  • LastPass - skann sider for brukernavn/passordoppføringer (nødvendig før Android Oreo)
  • Bytt raskt - send KeyEvent for tilbake-knappen
  • Tasker - oppdage når apper er åpne, slik at du kan utføre enhver brukerdefinert handling
  • Type Maskin - Ta opp all tekstinntasting slik at du aldri vil miste noen tekstinntasting

Ingen av disse applikasjonene bruker på den måten Google har tenkt, som er å hjelpe brukere med funksjonshemminger. Jeg vil satse på at de aller fleste applikasjoner som implementerer en tilgjengelighetstjeneste gjør det for funksjoner utenfor Googles område. Men det er det fine med Android og APIer som tilgjengelighet – Google begrenser vanligvis ikke hva utviklere kan og ikke kan gjøre. Den slappe tilnærmingen med bruk av tilgjengelighetstjenester ser imidlertid ut til å endre seg ettersom Google Play Butikkteamet har sendt e-post til utviklere som advarer dem om kommende endringer i retningslinjene deres mht 11 år.


Hva er det egentlig Google gjør?

Selskapet informerer utviklere om at hvis applikasjonen deres bruker en tilgjengelighetstjeneste av en annen grunn enn å hjelpe brukere med funksjonshemminger, så må fjerne bruken av denne tillatelsen innen 30 dager, ellers vil applikasjonen deres fjernes fra Play-butikken. Unnlatelse av å overholde dette kravet kan resultere i et brudd på en utvikleres Play Store-konto, som kan til slutt føre til kontooppsigelse.

For de få appene som bruker a11y for å hjelpe brukere med funksjonshemminger, opplyser Google at disse utviklerne trenger ganske enkelt å legge til en fremtredende, brukervendt avsløring av årsaken bak hvorfor appen deres trenger tillatelse. Imidlertid, som jeg nevnte før, brukes tilgjengelighetstjenester langt oftere i apper som vil ende opp med å bryte denne nye policyen.

Full e-post sendt til utviklere

Hei utviklere på ****,

Vi kontakter deg fordi appen din, ****, med pakkenavn **** ber om "android.permission. BIND_ACCESSIBILITY_SERVICE.' Apper som ber om tilgjengelighetstjenester skal bare brukes til å hjelpe brukere med funksjonshemminger med å bruke Android-enheter og apper. Appen din må være i samsvar med våre Tillatelser policy og de fremtredende avsløringskravene til vår Brukerdata Politikk.

Handling kreves: Hvis du ikke allerede gjør det, må du forklare brukerne hvordan appen din brukerandroid.permission. BIND_ACCESSIBILITY_SERVICE' for å hjelpe brukere med funksjonshemminger med å bruke Android-enheter og apper. Apper som ikke oppfyller dette kravet innen 30 dager, kan bli fjernet fra Google Play. Alternativt kan du fjerne eventuelle forespørsler om tilgjengelighetstjenester i appen din. Du kan også velge å oppheve publiseringen av appen din.

Hvis du trenger å gjøre endringer i appene dine, følg disse trinnene:

  • Les gjennom Tillatelser og Brukerdata retningslinjer for mer informasjon, og sørg for at appen din overholder alle retningslinjene som er oppført i Programretningslinjer for utviklere.
  • Hvis du ikke trenger BIND_ACCESSIBILITY_SERVICE-tillatelsen i appen din eller tillatelsen brukes til noe annet enn å hjelpe brukere med funksjonshemminger med å bruke Android-enheter og apper:
    1. Fjern forespørselen din om denne tillatelsen fra appens manifest.
    2. Logg på Play-konsollen og last opp den modifiserte APK-en som er i samsvar med retningslinjene.
  • Eller hvis du trenger BIND_ACCESSIBILITY_SERVICE-tillatelsen i appen din for å hjelpe brukere med funksjonshemminger med å bruke Android-enheter og apper:
    1. Ta med følgende kodebit i appens butikkoppføringsbeskrivelse: «Denne appen bruker tilgjengelighetstjenester».
    2. Gi fremtredende brukervendt avsløring av denne bruken før du ber brukeren om å aktivere denne tillatelsen i appen din. Offentliggjøringen din må oppfylle hvert av følgende krav:
      • Offentliggjøring må gis via android: sammendrag og Android: beskrivelse elementer i AccessibilityServiceInfo-klassen
      • Offentliggjøring må beskrive funksjonaliteten som tillatelsen til tilgjengelighetstjenesten aktiverer for appen din. Hver funksjon som brukes med forespørselen om tilgjengelighetstjeneste, må deklareres i opplysningene dine med begrunnelse.

Alternativt kan du velge å oppheve publiseringen av appen.

Alle brudd spores. Alvorlige eller gjentatte brudd av enhver art vil resultere i oppsigelse av utviklerkontoen din, og etterforskning og mulig oppsigelse av relaterte Google-kontoer.

Hvis du har gått gjennom retningslinjene og føler at vi kan ha tatt feil, kan du kontakte oss politikkstøtteteam. En av mine kolleger vil komme tilbake til deg innen 2 virkedager.

Hilsen

Google Play-gjennomgangsteamet

Les mer


Hvorfor fjerner Google tilgjengelighetstjenester fra Play-butikken?

Mens bruken av tilgjengelighetstjenester er kjent for å forårsake en del etterslep, er den virkelige grunnen til at Google begynner å slå ned på disse appene sannsynligvis relatert til det økende problemet med utnyttelser som drar nytte av a11y. Selv om appene som jeg nevnte ovenfor bruker a11y til fordelaktige formål, kan de lett utnyttes av ondsinnede utviklere til ondsinnede formål. For eksempel en tilgjengelighetstjeneste kan brukes til å implementere en keylogger, løsepengevare-angrep eller phishing-utnyttelse.

Googles innsats for å beskytte brukere mot ondsinnede tilgjengelighetstjenester har stort sett dreid seg om avsløring. Aktiverer for øyeblikket en tilgjengelighetstjeneste som registrerer seg for visse arrangementer som f.eks TYPE_VIEW_TEXT_CHANGED vil resultere i en advarselsdialog om at appen kan stjele passordene dine. Du tror kanskje at en slik melding ville være effektiv for å hindre brukere fra uansvarlig å gi apper 11y. Imidlertid har det vært mange dokumenterte tilfeller av apper som lurer brukere til å gi a11y. Noen angrep går enda lenger, som f.eks Utnyttelse av kappe og dolk og Toast Message Overlay-angrep som sosialt konstruerer brukeren til å gi a11y ved å feilrepresentere hva det er de samhandler med på skjermen.

Angrep som disse er effektive på de aller fleste Android-enheter. Google har gjort store fremskritt i å forhindre overlegg eller toast meldingsangrep (som kan sees i AOSP hvis du søker etter a11y), men ting har kommet til et punkt hvor Google bestemte at de er bedre å begrense bruken av tilgjengelighetstjenester fullstendig. Det er fornuftig, men det virkelig suger fordi dette trekket vil drepe funksjonaliteten til mange innovative apper.


Hva kan utviklere gjøre?

Dessverre, der er ikke mye utviklere kan gjøre som svar på disse endringene. Utviklere kan enten etterkomme Googles krav ved å fjerne tilgjengelighetstjenesten deres eller stå overfor trusselen om at appen deres blir fjernet og kontoen deres eventuelt avsluttes. Bare å legge til en avsløring for hvorfor appen deres bruker a11y ville bare fungere hvis appen deres var legitimt rettet mot å hjelpe brukere med funksjonshemminger, noe som ikke beskriver de fleste apper som for tiden bruker a11y.

Refaktorering av apper slik at de ikke lenger bruker en tilgjengelighetstjeneste er mulig for noen, men ikke alle, appene vi har nevnt. Passordbehandlere som LastPass kan migrere til Autofill Framework, men bare hvis brukeren kjører Android 8.0 Oreo og nyere. Hvis en app bruker a11y til å overvåke når andre apper er åpne, kan den appen i stedet skrives med en avstemningstjeneste som bruker UsageStats API. Apper som Tasker kan overleve en slik endring. Andre som Button Mapper og AutoInput er uheldige – uten root er det ingen god måte å avskjære KeyEvents.

Selv om vi anerkjenner faren ved å gi en ondsinnet app tilgang til tilgjengelighets-API-ene, er det synd å se noen virkelig nyttige apper bli kastrert av Google. Vi håper at retningslinjene Google har utformet er reversert, eller de hevder bare at den ble feiltolket. Som det står, er ordlyden i e-posten ganske tydelig – følg retningslinjene våre eller gå ut av Play-butikken. Det er en dyster påminnelse om at Google har all kraften til hvilke apper som hører hjemme i Play-butikken, og de kan trekke teppet ut under deg når som helst.


Oppdatering 1: Forvirrende utviklerdokumentasjon

Googles utviklerdokumenter for bygge en tilgjengelighetstjeneste ser ut til å motsi dette nye fokuset fra Google Play Store-teamet. Siden har følgende ordlyd i skrivende stund:

En tilgjengelighetstjeneste er en applikasjon som gir brukergrensesnittforbedringer for å hjelpe brukere med funksjonshemminger, eller som midlertidig ikke kan samhandle med en enhet. For eksempel kan brukere som kjører bil, tar seg av et lite barn eller deltar på en veldig høylytt fest, trenge ytterligere eller alternativ tilbakemelding på grensesnittet.

Videre, hvis du sammenligner ordlyden på siden med en arkivert versjon av siden fra juli, vil du oppdage at notatet om å bygge tilgjengelighetstjenester kun for å hjelpe brukere med funksjonshemninger ikke eksisterer.

Takk João Dias for at du tok kontakt med denne informasjonen.