Brisanje računa u iOS aplikaciji: test prije App Reviewa
Autor: Mehdi Azizi
Ažurirano , 7 min
Gumb za brisanje, povezani podaci, pretplata i ponovna prijava: konkretan plan za provjeru ovog toka prije slanja na App Review.
Gumb nije dovoljan: treba provjeriti što nestaje
Ako tvoja aplikacija omogućuje izradu računa, Apple traži da korisnik može pokrenuti njegovo brisanje iz same aplikacije. Obična deaktivacija ne ispunjava taj zahtjev. Tok mora biti lako pronaći i mora objasniti posljedice. Ako se dio završava na webu, poveznica mora voditi izravno na odgovarajuću stranicu. Izvor: brisanje računa prema Appleu.
Posao, dakle, ne završava crvenim gumbom u postavkama. Treba popisati podatke, izvršiti brisanje na serveru, obraditi greške i provjeriti što korisnik vidi nakon toga. Ovaj vodič nudi proizvodni i tehnički plan testiranja. Podaci na koje se odnosi obveza čuvanja traže postupanje prilagođeno tvojoj djelatnosti.
Počni s kartom podataka
Uzmimo izmišljenu aplikaciju za bilježenje pročitanih knjiga. Ima račun, profil, privatne bilješke i fotografije naslovnica koje dodaje korisnik. Primjer ispod opisuje plan za provjeru, a ne brisanje koje je već izvedeno u nekoj Devoria aplikaciji.
- Identitet za prijavu: kako učiniti račun neupotrebljivim nakon brisanja?
- Profil i bilješke: koji retci pripadaju toj osobi i kako se brišu?
- Pohranjene fotografije: koji postupak uklanja datoteke i reference na njih?
- Predmemorija na mobitelu: briše li ekran lokalne podatke kad je operacija stvarno uspjela?
- Vanjski servisi: trebaju li podaci povezani s tim računom zasebno brisanje?
- Podaci koje treba čuvati: koji, zbog koje obveze i kako je korisnik o tome obaviješten?
Ova karta te štiti od toga da naknadno otkriješ kako je fotografija i dalje dostupna iako je korisnički zapis nestao. Usput ti daje i popis objekata koje trebaš tražiti u testovima.
Jasan tok u četiri stanja
Evo prijedloga za izmišljenu aplikaciju. Prilagodi ga stvarnim posljedicama svog proizvoda:
- Postavke računa. Stavka „Izbriši moj račun” uvijek je dostupna.
- Potvrda. Ekran opisuje o kojim je podacima riječ i nudi opciju odustajanja jednako razumljivu kao i opciju brisanja.
- Obrada. Gumb sprječava dvostruke zahtjeve, a sučelje pokazuje da je operacija u tijeku.
- Rezultat. Potvrđeni uspjeh otvara odjavljeno stanje. Neuspjeh zadržava korisnu poruku i način da se pokuša ponovno, bez tvrdnje da je račun nestao.
Ako obrada traje neko vrijeme, Apple prihvaća odgođeni tok, pod uvjetom da obavijestiš osobu i potvrdiš završetak. Aplikacija ne smije stvarati dojam da je brisanje gotovo kad je samo zabilježen zahtjev. Ista Appleova dokumentacija pojašnjava i slučajeve ponovne autentifikacije te iznimke za strogo regulirane djelatnosti.
Što predvidjeti sa Supabaseom
Brisanje Auth korisnika samo po sebi nije dokaz da su obrađeni svi objekti tvog proizvoda. Supabase, među ostalim, objašnjava da se korisnik koji posjeduje Storage objekte ne može izbrisati dok se to ne riješi. Dokumentacija također navodi da brisanje korisnika ne odjavljuje odmah sve već izdane JWT-ove: njihovu valjanost treba uzeti u obzir pri dizajnu. Izvor: upravljanje korisnicima u Supabaseu.
Zato definiraj serversku obradu koja provjerava identitet podnositelja zahtjeva i resurse koji mu pripadaju. Ne oslanjaj se na identifikator koji mobitel slobodno šalje da bi odabrao račun za brisanje. Administratorska prava ostaju na serveru, u skladu s dokumentacijom o Supabase ključevima.
Kod obrade u više koraka odluči što novi pokušaj treba napraviti ako je prvi korak uspio, a sljedeći nije. Na primjer, ako su datoteke već uklonjene, novi zahtjev ne smije pasti samo zato što ih nema. To je scenarij koji zapišeš prije testa, a ne ponašanje koje pretpostaviš.
Račun i pretplata: dvije zasebne provjere
Osoba može izbrisati račun dok Appleova pretplata i dalje traje. Apple traži da objasniš što se događa s naplatom i da omogućiš pristup upravljanju pretplatom. Predvidi i odgovarajući opoziv tokena ako koristiš Sign in with Apple. Te su točke detaljno opisane u Appleovim smjernicama o brisanju.
U planu testiranja zato razdvoji nestanak računa, stanje plaćenog pristupa i upravljanje pretplatom. Vodič pretplata ili jednokratna kupnja pomaže ti smjestiti ovaj tok u tvoj poslovni model.
Plan testiranja na testnom buildu
Koristi isključivo testni račun i izmišljene podatke. Zabilježi build, uređaj, uočeni rezultat i ograničenja svake provjere.
- Odustani. Račun i podaci ostaju dostupni.
- Izbriši račun pun podataka. Konačno stanje odgovara najavljenoj obradi, a odgovarajući podaci stvarno su uklonjeni.
- Isključi mrežu. Aplikacija ne prikazuje lažni uspjeh.
- Ponovi nakon djelomičnog neuspjeha. Zahtjev može uspjeti bez diranja tuđih podataka.
- Otvori drugu sesiju. Stari pristupi obrađuju se u skladu s predviđenim mehanizmom.
- Ponovno izradi račun s istom adresom, ako je dopušteno. Stari privatni podaci se ne vraćaju.
Dodaj ove slučajeve u Devoria tablicu za testiranje. Za dijeljenje s testerima prati vodič za TestFlight. To što u konzoli nema poruke o grešci ne zamjenjuje provjeru podataka i toka.
Priprema za slanje na App Review
U bilješkama za pregled objasni gdje se nalazi opcija i kako je testirati. Ako neki korak ovisi o servisu, pobrini se da bude dostupan tijekom pregleda. Ne koristi bilješke da obećaš funkciju koje još nema u poslanom buildu.
Stranica aplikacija koju je Apple odbio pomaže ti organizirati odgovor kad je problem već prijavljen. Za pripremu odgovora, Apple Review Kit pomaže ti pronaći citirano pravilo, što ono traži te primjer ispravka i odgovora.
Ako pripremaš svoje prvo slanje, besplatna dijagnostika reći će ti što još trebaš napraviti i poslati ti moju checklistu protiv Appleovih odbijanja, uključujući brisanje računa. Ako je Apple već odbio tvoju aplikaciju, rezerviraj sat vremena sa mnom: poruku čitamo zajedno, putem videopoziva.
Česta pitanja
Je li brisanje računa obavezno u iOS aplikaciji?
Da, ako tvoja aplikacija omogućuje izradu računa: Apple traži da korisnik može pokrenuti brisanje iz same aplikacije. Obična deaktivacija ne ispunjava taj zahtjev. Tok mora biti lako pronaći i mora objasniti posljedice. Ako se dio završava na webu, poveznica mora voditi izravno na odgovarajuću stranicu.
Što treba izbrisati kad korisnik izbriše račun?
Sve što pripada toj osobi, a ne samo korisnički zapis. Napravi popis: identitet za prijavu, profil i stvoreni sadržaj, pohranjene datoteke i reference na njih, predmemorija na mobitelu, podaci kod vanjskih servisa. Zabilježi i podatke koje treba čuvati, zbog koje obveze, i obavijesti osobu. Bez tog popisa fotografija može ostati dostupna iako je korisnički zapis nestao.
Prihvaća li Apple brisanje računa koje nije trenutno?
Da. Ako obrada traje neko vrijeme, Apple prihvaća odgođeni tok, pod uvjetom da obavijestiš osobu i potvrdiš završetak. Aplikacija ne smije stvarati dojam da je brisanje gotovo kad je samo zabilježen zahtjev. U slučaju neuspjeha zadrži korisnu poruku i način da se pokuša ponovno, bez tvrdnje da je račun nestao.
Što se događa s pretplatom kad korisnik izbriše račun?
Appleova pretplata može se nastaviti i nakon brisanja računa. Apple traži da objasniš što se događa s naplatom i da omogućiš pristup upravljanju pretplatom. Ako koristiš Sign in with Apple, predvidi i odgovarajući opoziv tokena. U planu testiranja razdvoji nestanak računa, stanje plaćenog pristupa i upravljanje pretplatom.
Je li dovoljno izbrisati korisnika u Supabase Authu?
Ne, brisanje Auth korisnika ne dokazuje da su obrađeni svi objekti tvog proizvoda. Prema Supabase dokumentaciji, korisnik koji posjeduje Storage objekte ne može se izbrisati dok se to ne riješi. Brisanje korisnika također ne odjavljuje odmah sve već izdane JWT-ove. Predvidi obradu na serveru koja provjerava identitet podnositelja zahtjeva.
Kako testirati brisanje računa prije slanja Appleu?
Koristi testni račun i izmišljene podatke na testnom buildu. Prođi šest slučajeva: odustajanje, brisanje računa punog podataka, isključivanje mreže, ponavljanje nakon djelomičnog neuspjeha, otvaranje druge sesije te ponovna izrada računa s istom adresom ako je dopuštena. Provjeri podatke i tok: nije dovoljno što u konzoli nema greške. Za dijeljenje builda prati vodič za TestFlight.