Brisanje računa v iOS aplikaciji: test pred oddajo Applu
Avtor: Mehdi Azizi
Posodobljeno , 7 min
Gumb za brisanje, povezani podatki, naročnina in ponovna prijava: konkreten preizkus tega postopka, preden aplikacijo oddaš v App Review.
Gumb ni dovolj: preveriti moraš, kaj izgine
Če tvoja aplikacija omogoča ustvarjanje računa, Apple zahteva, da lahko uporabnik brisanje sproži v sami aplikaciji. Navadna deaktivacija te zahteve ne izpolni. Postopek mora biti lahko najdljiv in mora razložiti posledice. Če se del zaključi na spletu, mora povezava voditi neposredno na ustrezno stran. Vir: brisanje računa po Applovih pravilih.
Delo se torej ne konča pri rdečem gumbu v nastavitvah. Popisati moraš podatke, izvesti brisanje na strežniku, obravnavati napake in preveriti, kaj uporabnik vidi potem. Ta vodnik ponuja produktni in tehnični preizkus. Podatki, za katere velja obveznost hrambe, zahtevajo obravnavo, prilagojeno tvoji dejavnosti.
Začni z zemljevidom podatkov
Vzemimo izmišljeno aplikacijo za bralni dnevnik. Ima račun, profil, zasebne zapiske in naslovnice knjig, ki jih doda uporabnik. Spodnji primer opisuje načrt za preverjanje, ne brisanja, ki bi bilo že izvedeno v kateri od aplikacij Devoria.
- Prijavna identiteta: kako poskrbiš, da je račun po brisanju neuporaben?
- Profil in zapiski: katere vrstice pripadajo tej osebi in kako se izbrišejo?
- Shranjene fotografije: kateri postopek odstrani datoteke in sklice nanje?
- Predpomnilnik na telefonu: ali zaslon izbriše lokalne podatke, ko se operacija res uspešno zaključi?
- Storitve tretjih oseb: ali podatki, povezani s tem računom, zahtevajo ločeno brisanje?
- Podatki, ki jih moraš hraniti: kateri, zaradi katere obveznosti in kako o tem obvestiš uporabnika?
Ta zemljevid prepreči, da bi šele naknadno odkril, da je fotografija še dostopna, čeprav je uporabniški zapis izginil. Hkrati ti da seznam stvari, ki jih iščeš med testi.
Pregleden postopek v štirih stanjih
Tu je predlog za izmišljeno aplikacijo, ki ga prilagodi dejanskim posledicam svojega produkta:
- Nastavitve računa. Vnos „Izbriši moj račun“ je vedno dostopen.
- Potrditev. Zaslon opiše, katerih podatkov se brisanje tiče, in ponudi preklic, ki je enako razumljiv kot dejanje brisanja.
- Obdelava. Gumb prepreči dvojne zahteve, vmesnik pa pokaže, da operacija poteka.
- Rezultat. Potrjen uspeh odpre odjavljeno stanje. Ob neuspehu ostane uporabno sporočilo in možnost ponovnega poskusa, brez trditve, da je račun izginil.
Če obdelava traja dlje, Apple sprejme odložen postopek, pod pogojem da osebo obvestiš in ji potrdiš zaključek. Aplikacija ne sme dajati vtisa, da je brisanje končano, če je bila zabeležena le zahteva. Ista Applova dokumentacija pojasnjuje tudi primere ponovne avtentikacije in izjeme za močno regulirane dejavnosti.
Na kaj moraš biti pozoren pri Supabase
Brisanje uporabnika v Auth samo po sebi ni dokaz, da so bili obdelani vsi objekti tvojega produkta. Supabase med drugim pojasnjuje, da uporabnika, ki ima objekte v Storage, ni mogoče izbrisati, dokler to ni urejeno. Dokumentacija tudi opozarja, da brisanje uporabnika ne odjavi takoj vseh že izdanih JWT: njihovo veljavnost moraš upoštevati pri zasnovi. Vir: upravljanje uporabnikov v Supabase.
Zato določi strežniški postopek, ki preveri identiteto prosilca in vire, ki mu pripadajo. Ne zanašaj se na identifikator, ki ga telefon pošlje poljubno, da izbereš račun za brisanje. Administratorske pravice ostanejo na strežniku, v skladu z dokumentacijo o ključih Supabase.
Pri postopku v več korakih se odloči, kaj naj naredi ponovni poskus, če je prvi korak uspel, naslednji pa ne. Če so na primer datoteke že odstranjene, nova zahteva ne sme spodleteti samo zato, ker jih ni. To je scenarij, ki ga zapišeš pred testom, ne vedenje, ki ga predpostaviš.
Račun in naročnina: dve ločeni preverjanji
Oseba lahko izbriše račun, Applova naročnina pa se nadaljuje. Apple zahteva, da razložiš, kaj se zgodi z obračunavanjem, in omogočiš dostop do upravljanja naročnine. Če uporabljaš Sign in with Apple, poskrbi tudi za ustrezen preklic žetonov. Te točke so podrobno opisane v Applovih navodilih o brisanju.
V testnem načrtu zato loči izginotje računa, stanje plačljivega dostopa in upravljanje naročnine. Vodnik naročnina ali enkraten nakup ti pomaga umestiti ta postopek v tvoj poslovni model.
Preizkus, ki ga izvedeš na testni buildi
Uporabljaj samo testni račun in izmišljene podatke. Zapiši build, napravo, opaženi rezultat in omejitve vsakega preverjanja.
- Prekliči. Račun in podatki ostanejo dostopni.
- Izbriši račun s podatki. Končno stanje ustreza napovedani obdelavi, zadevni podatki so dejansko odstranjeni.
- Izklopi omrežje. Aplikacija ne pokaže lažnega uspeha.
- Ponovi po delnem neuspehu. Zahteva se lahko zaključi, ne da bi zadela druge podatke.
- Odpri drugo sejo. Stari dostopi so obravnavani v skladu s predvidenim mehanizmom.
- Ponovno ustvari račun z istim naslovom, če je dovoljeno. Stari zasebni podatki se ne pojavijo znova.
Te primere dodaj v Devorijin seznam za preizkus. Če jih želiš razdeliti testerjem, sledi vodniku TestFlight. Odsotnost sporočil o napakah v konzoli ne nadomesti preverjanja podatkov in postopka.
Priprava na oddajo v App Review
V opombah za pregled razloži, kje je dejanje in kako ga preizkusiti. Če je kak korak odvisen od storitve, poskrbi, da je med pregledom na voljo. Opomb ne uporabljaj za obljubljanje funkcije, ki je v oddani buildi še ni.
Stran aplikacija, ki jo je Apple zavrnil ti pomaga organizirati odgovor, ko je težava že prijavljena. Pri pripravi ti Apple Review Kit pomaga najti navedeno pravilo, kaj zahteva, ter primer popravka in odgovora.
Če pripravljaš svojo prvo oddajo, ti brezplačna diagnostika pove, kaj ti še ostane, in ti pošlje moj kontrolni seznam proti Applovim zavrnitvam, vključno z brisanjem računa. Če je Apple tvojo aplikacijo že zavrnil, rezerviraj uro z mano: sporočilo prebereva skupaj, prek videoklica.
Pogosta vprašanja
Ali je brisanje računa v iOS aplikaciji obvezno?
Da, če tvoja aplikacija omogoča ustvarjanje računa: Apple zahteva, da lahko oseba brisanje sproži v aplikaciji. Navadna deaktivacija te zahteve ne izpolni. Postopek mora biti lahko najdljiv in mora razložiti posledice. Če se del zaključi na spletu, mora povezava voditi neposredno na ustrezno stran.
Kaj moraš izbrisati, ko uporabnik izbriše svoj račun?
Vse, kar pripada osebi, ne le njenega uporabniškega zapisa. Naredi seznam: prijavna identiteta, profil in ustvarjene vsebine, shranjene datoteke in sklici nanje, predpomnilnik na telefonu, podatki pri storitvah tretjih oseb. Zapiši tudi podatke, ki jih moraš hraniti, zaradi katere obveznosti, in o tem obvesti osebo. Brez tega popisa lahko fotografija ostane dostopna, čeprav je uporabniški zapis izginil.
Ali Apple sprejme brisanje računa, ki ni takojšnje?
Da. Če obdelava traja dlje, Apple sprejme odložen postopek, pod pogojem da osebo obvestiš in ji potrdiš zaključek. Aplikacija ne sme dajati vtisa, da je brisanje končano, če je bila zabeležena le zahteva. Ob neuspehu ohrani uporabno sporočilo in možnost ponovnega poskusa, brez trditve, da je račun izginil.
Kaj se zgodi z naročnino, ko uporabnik izbriše račun?
Applova naročnina se lahko po izbrisu računa nadaljuje. Apple zahteva, da razložiš, kaj se zgodi z obračunavanjem, in omogočiš dostop do upravljanja naročnine. Če uporabljaš Sign in with Apple, poskrbi tudi za ustrezen preklic žetonov. V testnem načrtu loči izginotje računa, stanje plačljivega dostopa in upravljanje naročnine.
Ali je dovolj izbrisati uporabnika v Supabase Auth?
Ne, brisanje uporabnika v Auth ne dokazuje, da so bili obdelani vsi objekti tvojega produkta. Po dokumentaciji Supabase uporabnika, ki ima objekte v Storage, ni mogoče izbrisati, dokler to ni urejeno. Brisanje uporabnika tudi ne odjavi takoj vseh že izdanih JWT. Predvidi strežniški postopek, ki preveri identiteto prosilca.
Kako preizkusiti brisanje računa pred oddajo Applu?
Na testni buildi uporabi testni račun in izmišljene podatke. Izvedi šest primerov: preklic, brisanje računa s podatki, izklop omrežja, ponovitev po delnem neuspehu, odprtje druge seje in ponovno ustvarjanje računa z istim naslovom, če je dovoljeno. Preveri podatke in postopek: odsotnost napak v konzoli ni dovolj. Za razdelitev builde sledi vodniku TestFlight.