Politika privatnosti Dish-a za Android
Stupa na snagu 2026-05-21. Ova politika se odnosi na aplikaciju Dish za Android koju objavljuje TinkerNorth („mi“, „TinkerNorth“, „Dish“) i distribuira putem GitHub Releases. Ako ovo čitate iz aplikacije, najnoviju verziju možete pronaći i na https://dish.tinkernorth.com/privacy/dish-android/.
Kratka verzija
Dish za Android ne prikuplja nikakve lične informacije, identifikatore uređaja, analitiku upotrebe ili reklamne podatke. Nema sistem naloga. Jedini procesor koji TinkerNorth pokreće s kojim ikada kontaktira je Firebase Crashlytics, i to samo kada se aplikacija sruši. Nikada tokom normalne upotrebe.
Crash izvještaji nose stack trace, model uređaja, verziju Androida i auto-generisani install UUID. Ne nose vaš ulaz kontrolera, imena ili IP adrese Satellite-a sa kojima se uparujete, vaš Wi-Fi SSID, niti bilo kakve kontakt informacije. Pun Crashlytics obim je u sekciji 5 ispod. Možete se isključiti u bilo kojem trenutku putem ikone zupčanika na glavnom ekranu → Postavke → Dijagnostika → Dijeli crash izvještaje; izbor opstaje između pokretanja i poštuje se prije nego što bilo koji crash može biti uploadovan pri sljedećem startu.
Sve ostalo što aplikacija radi dešava se na vašem uređaju ili između vašeg uređaja i Satellite servera sa kojima ste se vi eksplicitno uparili na vlastitom LAN-u. Šifrovani UDP gamepad stream je samo lokalni saobraćaj; mi ga ne vidimo i ne obrađujemo.
Duža verzija ispod precizno objašnjava šta aplikacija radi na uređaju, koje dozvole traži i zašto, koji podaci žive gdje, te koja su vaša prava prema GDPR-u (EU), UK GDPR-u, CCPA / CPRA (Kalifornija) i LGPD-u (Brazil).
Ko smo mi
TinkerNorth je projekat jednog programera koji objavljuje Dish i Satellite paket kao besplatan softver otvorenog koda. Ne pokrećemo komercijalni servis vezan za Dish za Android. Za pitanja o privatnosti, kontaktirajte privacy@tinkernorth.com.
1. Informacije koje ne prikupljamo
Radi jasnoće, evo šta Dish za Android ne prikuplja, iako mnoge aplikacije u ovoj kategoriji to čine:
- Bez imena, email adrese, broja telefona ili kredencijala naloga.
- Bez advertising ID-ja (AAID), Android ID-ja, IMEI-ja ili drugih ad-tracking identifikatora uređaja.
- Bez precizne ili približne lokacije.
- Bez kontakata, kalendara, fotografija, datoteka ili audio mikrofona.
- Bez opšte analitike upotrebe. Ne pokrećemo Firebase Analytics, Google Analytics, niti bilo koji drugi event-tracking pipeline. Jedini off-device podaci su crash-only Crashlytics obim opisan u sekciji 5.
- Bez reklamnih podataka i bez reklama unutar aplikacije.
- Bez metapodataka o igrama koje igrate, kontrolerima koje koristite ili vremenima kada ih koristite.
2. Informacije obrađene lokalno na vašem uređaju
Sljedeće informacije se obrađuju lokalno na vašem uređaju. Ne napuštaju vaš uređaj, osim gdje je eksplicitno naznačeno da odlaze na Satellite server sa kojim ste se uparili na vlastitom LAN-u:
- Ulazi kontrolera. Pritisci dugmadi, pozicije analognih sticks-ova i pritisci triger-a sa touch overlay-a na ekranu ili fizičkog gamepad-a pričvršćenog za vaš telefon. Ovi su end-to-end šifrovani (ChaCha20-Poly1305) i šalju se samo na Satellite servere sa kojima ste se uparili, preko UDP-a na vašem LAN-u.
- Očitavanja senzora pokreta. Ako omogućite prosljeđivanje gyroskopa / akcelerometra, IMU izlaz telefona se uzorkuje do 250 Hz, šifruje i šalje uparenom Satellite-u. Ovo je podrazumijevano isključeno i prebacuje se u overlay aktivnosti aplikacije.
- Stanje baterije. Aplikacija čita nivo baterije i status punjenja vašeg telefona iz Android
BatteryManager-a kako bi mogla proslijediti sposobnost baterije vašem Satellite-u jednom svakih 30 sekundi i pri prelazima stanja. Ovo se šalje šifrovano samo uparenom Satellite-u. - Lista uparenih Satellite-a. Kada se uparite sa Satellite-om, aplikacija pohranjuje IP adresu, port, prikazno ime, identifikator uređaja i 256-bitni simetrični ključ po-Satellite-u izveden tokom X25519 handshake-a uparivanja. Ovo se drži u Android-ovim
SharedPreferencesza aplikaciju i sandboxed je na aplikaciju. - Zapamćeni Bluetooth hostovi. Ako koristite funkciju Bluetooth HID passthrough-a, aplikacija pohranjuje MAC adresu i ime svakog zapamćenog hosta u
SharedPreferenceskako biste se mogli ponovo povezati bez ponovnog uparivanja. - Otkriveni LAN serveri. IP adresa, port i ime svakog Satellite-a oglašenog na vašoj lokalnoj mreži preko mDNS-a ili UDP broadcast-a, drže se u memoriji za vrijeme trajanja ciklusa otkrivanja. Ne perzistira se između pokretanja osim ako se ne odlučite upariti.
- Preference aplikacije. Tip kontrolera po slotu (Xbox / PlayStation), rasporedi touch overlay-a po igri, izbor jezika. Pohranjeno u
SharedPreferencesna vašem uređaju. - Android logovi. Kao i svaka Android aplikacija, Dish piše dijagnostičke poruke u Android sistemski log (
logcat). Ovi nikada ne napuštaju vaš uređaj; vidljivi su vama (i svakome ko ima USB debugging pristup vašem telefonu), ali se ne prenose nigdje.
3. Dozvole koje aplikacija traži i zašto
Dozvole koje Dish za Android deklariše u svom AndroidManifest.xml-u navedene su ispod sa tačnim razlogom zašto svaka postoji.
INTERNET. Potrebno za slanje šifrovanih UDP gamepad paketa Satellite-u na vašem LAN-u i za izvođenje HTTPS handshake-a uparivanja. Ne kontaktiramo nikakve servere koje pokrećemo.ACCESS_NETWORK_STATE. Omogućava aplikaciji da primijeti kada nemate Wi-Fi i prikaže koristan baner umjesto tihog otkazivanja.ACCESS_WIFI_STATE. Koristi se za otkrivanje da li ste uopšte na Wi-Fi-u, tako da vas aplikacija može upozoriti da je Satellite nedostupan preko mobilnih podataka.CHANGE_WIFI_MULTICAST_STATE. Potrebno za mDNS / Bonjour otkrivanje Satellite servera na vašem LAN-u. Bez toga, jedina putanja otkrivanja je legacy UDP broadcast.WAKE_LOCK. Drži ekran / CPU budnim tokom aktivne streaming sesije tako da pritisak dugmeta ne bude odgođen Doze-om.FOREGROUND_SERVICEiFOREGROUND_SERVICE_CONNECTED_DEVICE. Android zahtijeva foreground servis da održi dugotrajnu connected-device sesiju živom kada je aplikacija u pozadini. Connected-device tip servisa odgovara use case-u kontroler-prema-hostu.POST_NOTIFICATIONS(Android 13+). Postavlja notifikaciju tekuće sesije koju zahtijeva foreground servis, plus opcionalne banere za promjene stanja veze. Možete odbiti i aplikacija će i dalje raditi; notifikacija samo nije vidljiva.VIBRATE. Usmjerava rumble događaje proslijeđene iz vaše igre na vibrator(e) telefona kako biste ih osjetili u ruci.BLUETOOTH/BLUETOOTH_ADMIN(Android ≤ 11),BLUETOOTH_CONNECTiBLUETOOTH_ADVERTISE(Android 12+). Potrebno samo ako koristite funkciju Bluetooth HID passthrough-a za registraciju vašeg telefona kao virtuelnog Bluetooth kontrolera za drugog hosta. Nikada ne skeniramo niti logujemo uređaje koje niste eksplicitno odabrali da uparite.
Aplikacija ne traži nijednu od ovih dozvola: lokacija (precizna ili gruba), kamera, mikrofon, kontakti, kalendar, SMS, dnevnik poziva, tjelesni senzori, datoteke / mediji. Ako neka buduća verzija zatreba bilo koju od njih, ova politika će biti ažurirana prije izdanja.
4. Ponašanje mreže
Dish za Android pokreće mrežni saobraćaj na četiri mjesta:
- LAN otkrivanje. Aplikacija šalje i sluša mDNS / Bonjour upite na multicast adresi
224.0.0.251:5353, te sluša legacy UDP broadcast bekone na portu 9879. Ovaj saobraćaj ostaje na vašoj lokalnoj mreži. - Handshake uparivanja. Kada dodirnete otkriveni Satellite i unesete 4-cifreni PIN prikazan na Satellite-u, aplikacija pravi jedan HTTPS POST zahtjev na IP Satellite-a na TCP portu 9443. Tijelo zahtjeva sadrži 32-byte X25519 javni ključ, PIN, identifikator uređaja i oznaku uređaja. Satellite sertifikat je samopotpisani i ne validira se protiv javnog CA; povjerenje se uspostavlja PIN-om, koji se konzumira jednom i potom uništava.
- Streaming sesija. Jednom upareno, aplikacija šalje ChaCha20-Poly1305-autentikovane UDP pakete na IP Satellite-a na portu 9876 i sluša return-path pakete (rumble, lightbar, status događaje) na istom soketu. Otkucaji se okidaju svake 2 sekunde.
- Crash izvještaji. Ako (i samo ako) se aplikacija sruši ili ANR-uje, isporučeni Firebase Crashlytics SDK uploaduje crash izvještaj Google-u. Detaljan obim i izuzeci su u sekciji 5. Nema putanje telemetrije normalnog rada: nema analitičkog endpointa, nema „provjeri ažuriranja“ endpointa, nema endpointa za daljinsku konfiguraciju. Provjere ažuriranja obavlja Google Play Store ili vi ručno.
Sav odlazni HTTPS saobraćaj je takođe ograničen eksplicitnim network_security_config.xml-om koji odbija cleartext svakom hostu, tako da buduća regresija ne može tiho degradirati vezu na običan HTTP.
5. Crash izvještavanje (Firebase Crashlytics)
Dish za Android koristi Firebase Crashlytics (koji pruža Google LLC) za prikupljanje crash i ANR izvještaja kako bismo mogli dijagnostikovati bugove koji izbjegnu testiranje. Crashlytics je jedini tok podataka sa vašeg uređaja do procesora koji TinkerNorth pokreće.
Kada se aplikacija sruši (neuhvaćen Kotlin izuzetak, fatalni signal u nativnom JNI sloju ili Application Not Responding događaj), Crashlytics uploaduje:
- Stack trace (Kotlin i/ili nativni).
- Model uređaja, proizvođač, verziju Androida, jezik, slobodan RAM i slobodan disk u trenutku crash-a.
- Version code i version name aplikacije.
- Firebase Installation ID, auto-generisani UUID koji nam omogućava da brojimo jedinstvene pogođene instalacije bez identifikacije vas lično.
- Posljednjih nekoliko log linija koje smo eksplicitno označili kao relevantne. Ne uploadujemo opšti
logcatsadržaj.
Crashlytics ne prima:
- Imena, IP-ove ili MAC adrese Satellite-a ili Bluetooth hostova sa kojima se uparujete.
- Vaše ulazne događaje gamepad-a, uključujući stream-ove pokreta i touchpada.
- Vaš Wi-Fi SSID, BSSID ili IP adresu.
- Bilo kakve kontakt informacije, email adresu ili ime.
- Sadržaj šifrovane UDP gamepad žice.
Crashlytics čuva crash podatke 90 dana, zatim ih briše. Pogledajte Google-ovu politiku privatnosti i sigurnosti Firebase-a za Google-ovu ulogu kao procesora. TinkerNorth je kontrolor podataka; Google je procesor.
Opt-out. Dodirnite ikonu zupčanika na glavnom ekranu, zatim u Postavkama pod Dijagnostika isključite Dijeli crash izvještaje. Prekidač je podrazumijevano uključen. Isključivanje poziva FirebaseCrashlytics.setCrashlyticsCollectionEnabled(false) i perzistira izbor u privatnoj pohrani aplikacije. Sljedeće pokretanje aplikacije primjenjuje sačuvanu preferenciju prije bilo koje code putanje koja bi mogla proizvesti crash izvještaj, a kontroler poštuje preferenciju do kraja sesije tako da opt-out usred sesije odmah stupa na snagu. Preferencija je uključena u Android cloud backup, tako da preživljava prenose uređaja. Crash izvještaji već prikupljeni prije nego što se isključite ostaju na Firebase-u dok njegov standardni period čuvanja od 90 dana ne istekne, zatim se brišu.
Build varijante koje se isporučuju bez google-services.json-a (na primjer, svako ko sam gradi iz izvornog koda) uopšte nemaju inicijalizovan Crashlytics SDK, čak i ako je prekidač uključen. Kontroler ovo otkriva preko FirebaseApp.getApps i no-op-uje.
Ne pokrećemo Firebase Analytics. Crashlytics i Analytics su odvojeni Firebase proizvodi, a ova aplikacija linkuje samo Crashlytics. Namjerno smo zadržali firebase-analytics zavisnost van build-a, jer bi uključivanje automatski prikupljalo događaje (first_open, session_start, screen_view, app_remove, itd.) i povuklo com.google.android.gms.permission.AD_ID u produkcijski manifest. Ništa od ovoga danas nije istinito. Ako se Analytics ikada doda, ova politika će biti ažurirana prije nego što se promjena isporuči.
6. Servisi i SDK-ovi trećih strana
Zavisnosti koje se isporučuju unutar APK-a:
- AndroidX (Google): standardne Android biblioteke podrške.
- Material Components for Android (Google): Material 3 UI widget-i.
- AndroidX GameActivity (Google): most za nativni game-loop.
- libsodium (izgrađen iz izvornog koda preko NDK-a): biblioteka kriptografskih primitiva, koristi se za ChaCha20-Poly1305 i X25519. Ne pokreće nikakav mrežni saobraćaj.
- Firebase Crashlytics + Firebase Installations (Google): samo crash + ANR izvještavanje, obim detaljiran u sekciji 5. SDK je uvijek uključen u APK; inicijalizuje se samo kada je build sastavljen sa validnim
google-services.json-om. Bez te datoteke (na primjer, svako ko gradi iz izvornog koda bez Firebase projekta), Crashlytics no-op-uje u runtime-u i ništa ne napušta uređaj.
Firebase Analytics namjerno nije u build-u. Uključivanje bi automatski prikupljalo događaje i povuklo AD_ID dozvolu u manifest, oba u suprotnosti sa ovom politikom. app/build.gradle.kts datoteka ima komentar koji objašnjava odabir tako da budući saradnik vidi ograničenje prije nego što ponovo doda zavisnost.
Puna lista zavisnosti je u app/build.gradle.kts u dish-android repu i software bill of materials (SPDX + CycloneDX) isporučenom sa svakom tagovanom verzijom.
Ako ste Dish za Android nabavili putem Google Play-a, sam Play Store je regulisan Google-ovom politikom privatnosti. To je odvojeno od ove politike i van naše kontrole.
7. Podaci koje dijelimo
Ne prodajemo, ne iznajmljujemo i ne dijelimo lične informacije za reklamiranje, marketing ili bilo koju komercijalnu svrhu. Nemamo odnose sa reklamnim mrežama, dobavljačima analitike, dobavljačima detekcije prevara ili marketinškim partnerima. Jedina treća strana koja ikada prima bilo kakve podatke iz ove aplikacije je Google LLC, koji djeluje kao procesor za Firebase Crashlytics pod obimom opisanim u sekciji 5.
8. Čuvanje podataka
Podaci na uređaju žive dok ne deinstalirate aplikaciju ili koristite Android opciju „Obriši pohranu“ u Postavke > Aplikacije > Dish.
Dva dijela privatnih podataka aplikacije različito interaguju sa Android cloud backup-om:
- Dijeljeni ključevi uparenih Satellite-a i zapamćeni Bluetooth hostovi (datoteka
connection_store.xml) su isključeni iz auto-backup-a i prenosa uređaja, tako da kriptografski materijal nikada ne napušta vaš uređaj. Ponovno uparivanje je ispravan odgovor kada pređete na novi telefon. - Preferencija opt-out-a za crash izvještavanje (datoteka
user_preferences.xml) jeste uključena u cloud backup, tako da namjerno „ne, hvala“ prelazi na zamjenski uređaj bez da morate ponovo prebacivati prekidač.
Crashlytics čuva crash izvještaje 90 dana na Google-ovoj infrastrukturi, zatim ih briše.
9. Privatnost djece
Dish za Android nije usmjeren ka djeci ispod 13 godina (ili ispod ekvivalentne dobi u vašoj jurisdikciji: 14 u Južnoj Koreji, 16 u većini EU). Crashlytics obim opisan u sekciji 5 ne sadrži informacije koje bi mogle identifikovati dijete kao dijete (bez imena, bez datuma rođenja, bez emaila). Ako vjerujete da su podaci djeteta prikupljeni putem ove aplikacije, pošaljite email na privacy@tinkernorth.com sa Firebase Installation ID-jem ili nedavnom vremenskom oznakom crash-a i obrisaćemo povezane izvještaje.
10. Međunarodni prenosi
Podaci na uređaju ne napuštaju vaš uređaj. Crashlytics payload crash izvještaja se šalje Google LLC-u i može se obrađivati u bilo kojoj zemlji u kojoj Google ima infrastrukturu, uključujući Sjedinjene Države. Prenosi iz EEA / UK u SAD oslanjaju se na Standard Contractual Clauses; pogledajte Google-ove Data Processing and Security Terms za potpunu dokumentaciju mehanizma prenosa.
11. Vaša prava
11.1 GDPR (Evropski ekonomski prostor)
Ako ste u EEA, Opšta uredba o zaštiti podataka (GDPR) vam daje prava pristupa, ispravke, brisanja, ograničenja obrade, prenosivosti podataka i prigovora. Jedini lični podaci koje obrađujemo za korisnike u EEA su Firebase Installation ID i payload crash izvještaja opisan u sekciji 5. Da biste ostvarili bilo koje od tih prava:
- Zaustavite prikupljanje (pravo na prigovor / povlačenje saglasnosti): otvorite aplikaciju, dodirnite ikonu zupčanika na glavnom ekranu, zatim u Postavkama pod Dijagnostika isključite Dijeli crash izvještaje. Preferencija stupa na snagu do kraja sesije odmah i ponovo se primjenjuje prije nego što bilo koji crash može biti uploadovan pri svakom narednom pokretanju aplikacije. Deinstalacija aplikacije ili gradnja iz izvornog koda bez
google-services.json-a su ekvivalentne putanje za zaustavljanje prikupljanja. - Pristup, ispravka, brisanje, prenosivost: pošaljite email na privacy@tinkernorth.com sa približnim datumom / vremenom crash-a i modelom vašeg uređaja. Ne prikazujemo Firebase Installation ID u UI-ju aplikacije, pa identifikujemo izvještaje vremenskom oznakom + modelom uređaja umjesto da vas tražimo da iskopate ID iz debug logova. Pogledaćemo da li se neki izvještaji podudaraju i odgovoriti u roku od 30 dana kako to zahtijeva GDPR čl. 12(3).
Pravni osnovi. Lokalna obrada na uređaju (ulaz kontrolera, ključevi uparivanja, zapamćeni hostovi) oslanja se na vašu saglasnost, izraženu instaliranjem aplikacije i dodjelom dozvola, i izvršenje ugovora kada od aplikacije tražite da se upari i strima vašem Satellite-u. Crashlytics obrada oslanja se na naš legitimni interes (GDPR čl. 6(1)(f)) u održavanju radne aplikacije, balansiran sa strogim no-PII obimom opisanim u sekciji 5.
Međunarodni prenosi. Crashlytics podatke obrađuje Google LLC, koji može prenositi podatke izvan EEA pod Standard Contractual Clauses. Pogledajte Google-ove Data Processing and Security Terms.
Imate pravo da podnesete prigovor svojoj nacionalnoj agenciji za zaštitu podataka. Listu održava European Data Protection Board.
11.2 UK GDPR (Ujedinjeno Kraljevstvo)
Ako ste u UK, UK GDPR ogleda prava u sekciji 11.1 iznad. Vaše nadzorno tijelo je Information Commissioner's Office (ICO). Primjenjuje se isti Crashlytics obim i mehanika opt-out-a.
11.3 CCPA / CPRA (Kalifornija)
Ako ste stanovnik Kalifornije, California Consumer Privacy Act (kako je izmijenjen CPRA-om) daje vam prava da znate, brišete, ispravljate, isključite se iz prodaje ili dijeljenja, i ograničite upotrebu osjetljivih ličnih informacija. Ne prodajemo niti dijelimo lične informacije (kako su definisane pod CCPA / CPRA), i nismo to činili u prethodnih 12 mjeseci. Link „Do Not Sell or Share My Personal Information“ nije potreban jer nema prodaje ili dijeljenja iz kojeg bi se isključili.
Da biste ostvarili „pravo da znate“ ili „pravo na brisanje“ protiv obima crash izvještaja u sekciji 5, pošaljite email na privacy@tinkernorth.com sa svojim Firebase Installation ID-jem (ili nedavnom vremenskom oznakom crash-a i modelom uređaja). Takođe možete imenovati ovlašćenog agenta da podnese zahtjev u vaše ime.
11.4 Ostale američke države
Stanovnici Virdžinije (VCDPA), Kolorada (CPA), Konektikata (CTDPA), Utaha (UCPA), Teksasa (TDPSA) i ostalih država sa sveobuhvatnim zakonima o privatnosti imaju ekvivalentna prava. Primjenjuje se isti Crashlytics obim i mehanika opt-out-a.
11.5 LGPD (Brazil)
Ako ste u Brazilu, Lei Geral de Proteção de Dados (LGPD) vam daje prava potvrde, pristupa, ispravke, anonimizacije, prenosivosti i brisanja. Primjenjuje se isti Crashlytics obim i mehanika opt-out-a. Da biste ostvarili bilo koje pravo, pošaljite email na privacy@tinkernorth.com. Naš DPO kontakt je ista adresa.
12. Sigurnost
Svaki paket razmijenjen između Dish-a i Satellite-a zapečaćen je sa ChaCha20-Poly1305 IETF koristeći 256-bitni simetrični ključ izveden iz X25519 razmjene ključeva zasijane četvorocifrenim PIN-om za uparivanje. Ključ nikada ne napušta vaš uređaj niti upareni Satellite, a PIN se uništava nakon uparivanja. Za potpun threat model pogledajte /security/ na ovoj stranici.
Da prijavite ranjivost, pogledajte SECURITY.md u Satellite repu.
13. Promjene ove politike
Ažuriraćemo ovu politiku ako se ponašanje aplikacije promijeni na način koji utiče na ono što je ovdje opisano. Materijalne promjene biće objavljene u napomenama o izdanjima aplikacije, a datum „Stupa na snagu“ na vrhu ove stranice biće ažuriran. Prethodna verzija svake politike čuva se u git historiji ove stranice.
14. Kontakt
Privatnost: privacy@tinkernorth.com
Sigurnost: pogledajte SECURITY.md u Satellite repu
Opšte: otvorite GitHub issue na dish-android repu
← Nazad na indeks privatnosti