Giter Club home page Giter Club logo

erouska-ios's Introduction

# eRouška

Platform: iOS

Download on the App Store

Read our FAQ: Czech, English

eRouška (rouška = face mask in Czech) helps to fight against COVID-19.

eRouška uses Bluetooth to scan the area around the device for other eRouška users and saves the data of these encounters.

It's the only app in Czechia authorized to use Exposure Notifications API from Apple/Google.

Who is developing eRouška?

Starting with version 2.0, the eRouška application is developed by the Ministry of Health in collaboration with the National Agency for Communication and Information Technologies (NAKIT). Earlier versions of eRouška application were developed by a team of volunteers from the COVID19CZ community. Most of original eRouška developers continue to work on newer versions in the NAKIT team.

International cooperation

We are open-source from day one and we will be happy to work with people in other countries if they want to develop a similar app. Contact David Vávra for technical details.

Building the App from the source code

Exposure notifications work only with approved Ministry account.

You can build using your own account when you delete com.apple.developer.exposure-notification entitlement from project.yml file under targets -> eRouska Dev -> entitlements -> properties and change code signing to your account.

Command line dependencies

We use Bundler and Mint to manage command line tools.

Project generation

xcodegen is used to generate project files and entitlements. To generate a project workspace, run ./setup.sh in the project root directory. It will generate project files and install all needed dependencies. Do not run pod install manually anymore. Use the setup.sh script or run bundle pod install instead.

Code signing

To update your code signing settings, you would need to copy template .xcconfig files from Configs/Templates/ directory to Configs/ directory and fill them with proper values. xcodegen is looking for these files in Configs directory and use them in project generation. All .xcconfig files in Configs directory are ignored by git, so you don't have to worry about accidentally pushing your code signing settings or pulling somebody elses.

Contributing

We are happy to accept pull requests! See Git Workflow.

If you want to become a more permanent part of the team, join our Slack, channel #erouska.

Translations

Help us translate to your language or if you see a problem with translation, fix it. Our translation is open to volunteers at OneSky.

Git workflow

  • Work in a fork then send a pull request to the develop branch.
  • Releases are tagged.

erouska-ios's People

Contributors

ashhanai avatar augard avatar baradrb avatar beny avatar davidkaya avatar ddmus avatar foxlik avatar jendakol avatar marekaf avatar martin-bryndza avatar michalsrutek avatar mkj-is avatar robskr avatar romanpodymov avatar segeda avatar skorepak avatar stanislavk avatar zoul avatar zrzka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

erouska-ios's Issues

Rizikové setkání - nepřesná informace?

Dobrý den,
čerstvě po instalaci mi sekce Rizikové setkání píše "V posledních 14 dnech nebyla ve vaš blízkosti žádná osoba s potvrzeným onemocněním COVID-19".

Je tato informace přesná, tedy používá aplikace data, která "potichu" posledních 14 dní sbíral systém? Nebo je to číslo 14 hardcodované a tudíž nepřesné? Mělo by se možná namísto toho používat min(počet dní od instalace, 14)...

Na uvodní obrazovce mi aplikace "blika"

Na úvodní obrazovce, se obrazovka zhasne pokud omylem zakryji prstem senzor přiblížení. Takto obrazovka zhasne pokud je zakrytý, pokud prsty oddělám, obrazovka se rozsvítí. (Všiml jsem si toho náhodou, ale dělat by to podle mě nemělo....)

e-rouska

iPhone 7 (32GB)

Nemoznost kliknout na odkaz prekryty prechodem nad buttony

Uzivatel nemuze kliknout na odkazy, ktere se nachazi pod vrstvou, ktera se stara o smooth prechod na pomezi textu/buttonu.

AFAIK se to tyka

  • uvodni obrazovky, kde je posledni odkaz Vice o auditech a Podminky
  • obrazovky s tel. c., kde je odkaz Podminky zpracovani (na iPhone SE s vyjetou klavesnici)

Počet kontaktů

Bylo by fajn kdyby aplikace zobrazovala kolik setkání zaznamenala. Člověk by měl alespoň rámcový přehled jestli potkává lidi s erouškou a nebo jede "na prázdno".

Soubor db.csv není mazán

Při chybném/úspěšném odeslání není soubor db.csv smazán, zůstává v .documentDirectory a putuje tak do iCloud zálohy.

BTW to má například za následek to, že uživatel klikne na Smazat data, smažou se jen Realm záznamy, ale db.csv tam pořád je.

Angličtina vs čeština v 2.1

S iOS v angličtine mám v 2.1 aplikáciu v češtine ale jedna obrazovka je celá v angličtine. Vyzerá to celkom komicky:

signal-2020-09-17-205529

Ak explicitne nastavím, aby sa aplikácia ukazovala v češtine, tak sa tá anglická obrazovka zmení na českú ale jej menu položka ostane stále v angličtine (Risky encounters).

Trochu nechápem, prečo sa aplikácia tvári, že podporuje angličtinu, keď to tak nie je (a ako to vôbec prešlo cez review). Je to len matúce.

Neplatné tel cislo

    1. 2020
      Po více než 100 dnech dobrovolníci ze zdravotnické linky s volbou 2 pod celostátní infolinkou 1212 ukončují činnost. Řešili tisíce dotazů veřejnosti po celý průběh epidemie covid-19. Zdravotnická linka nyní přechází přímo pod oddělení pro veřejnost Ministerstva zdravotnictví s novým jednotným číslem 224 972 222. Jde o oficiální linku pro veřejnost ke všem zdravotnickým tématům, nejen koronavirovým.
      V erousce je stále puvodni 1212
      041E08A9-D492-494D-9C68-00A3686EDD73
      Uploading 81B29EB0-5929-42B5-ADEC-006DF8B6437D.png…

Podpora iPad mini 5

Dobry den,
kamarad ma iPad mini 5 (https://en.wikipedia.org/wiki/IPad_Mini_(5th_generation)) a podle vseho splnuje HWove moznost provozovat eRousku, kterou by moc chtel mit spustenou. Ve zdrojaku jsem nasel, ze je IFovano jen na iPhony, ale odkazovany link nerika nic o tom, ze by to s exposure protocolem nemelo pracovat. Mohl bych poprosit o provereni? Prosel jsem dokumentaci na https://covid19.apple.com/contacttracing a prijde mi, ze se tam nikde nepise, ze iPady jsou nepodporovany... nebo mi neco uniklo (nejsem Apple uzivatel/programator).
Dekuji
Ivos

Přidat čas při zobrazení podezření na rizikové setkání

Bylo by dobré kromě datumu kdy došlo k rizikovému setkání zobrazit alespoň přibližnou hodinu kdy k němu došlo. Objevují se informace o false positive od lidí kteří daný den tvrdí že nikam nešli daný den. Myslím že uvedení alespoň hrubé časové značky spolu s datumem by lidem pomohlo dohledat nebo si vzpomenout kde v tu dobu byly. Data tam pro to jsou k dispozici pokud si dobře pamatuji z kódu.

pod install: CocoaPods could not find compatible versions for pod "Firebase/Functions"

Podfile.lock je out of date. pod update to řeší.

➜  erouska-ios git:(master) pod install
Analyzing dependencies
[!] CocoaPods could not find compatible versions for pod "Firebase/Functions":
  In snapshot (Podfile.lock):
    Firebase/Functions (= 6.20.0)

  In Podfile:
    Firebase/Functions

None of your spec sources contain a spec satisfying the dependencies: `Firebase/Functions, Firebase/Functions (= 6.20.0)`.

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

Validace zahranicnich telefonich cisel

Validace nefunguje správně, nevím jestli je to designová chyba (uživatel by měl být vyzván k zadání pouze českého číslo), nebo technická.

Pro Dánske číslo, lze zadat spravnou předvolbu +45 bez námitek aplikace, ale při zadání čísla samotneho XX XX XX XX, nelze zvalidovat protože se očekává 9-ti ciferné číslo.

Akce u Smazat data by měla smazat i application.log

Logy obsahují věci jako ...

log("BTScanner: Discovered \(String(describing: peripheral.name)) ID: \(peripheral.identifier.uuidString) \(advertisementData) at \(RSSI)")
log("BTScanner: RSSI range \(RSSI.intValue)")

... a mažou se pouze Realm záznamy.

    func deleteAllData() {
        scannerStore.deleteAllData()
    }

extension ScannerStore {
    
    func deleteAllData() {
        do {
            let realm = try Realm()
            try realm.write {
                realm.deleteAll()
            }
        } catch {
            log("Realm: Failed to delete! \(error)")
        }
    }
}

Network error není čitelný

Když jsem se snažil refreshnout statistiky na stránce novinek, dostal jsem výjimku (předpokládám, že NetworkException), ale ta se hned schová. Vypadá to ale, že ta by měla na obrazovce zůstat, dokud se nevytvoří nějaká uživatelská interakce.

Upload.from.GitHub.for.iOS.MOV

CocoaPods could not find compatible versions for pod "SwiftyMarkdown"

Starý známý ...

➜  erouska-ios git:(master) pod install
Analyzing dependencies
[!] CocoaPods could not find compatible versions for pod "SwiftyMarkdown":
  In snapshot (Podfile.lock):
    SwiftyMarkdown (= 1.2.1, ~> 1.2.1)

  In Podfile:
    SwiftyMarkdown (~> 1.2.1)

None of your spec sources contain a spec satisfying the dependencies: `SwiftyMarkdown (~> 1.2.1), SwiftyMarkdown (= 1.2.1, ~> 1.2.1)`.

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.
➜  erouska-ios git:(master)

Remote Config - Pridat nacitani dat s configu

Firebase Remote Config
Obsahuje konstanty, které jdou později měnit bez updatu aplikace. Hodnoty jdou dokonce měnit i pro subset uživatelů (např. lidi s konkrétním devicem)

  • collectionSeconds (doba scanování v sekundách, default = 120)
  • waitingSeconds (doba čekání mezi scany, default = 0)
  • advertiseTxPower (vysílací výkon, hodnota 0-3 (ultra low, low, medium, high))
  • advertiseMode (frekvence vysílání, hodnota 0-2) (0 - low power/high latency, 1 - kompromis, 2 - low latency/high power)), default = 1
  • scanMode (chování skenu, hodnota 0-2; 0 - low power/high latency, 1 - kompromis, 2 - low latency/high power), default = 1
  • advertiseRestartMinutes (frekvence restartování BLE advertisingu/broadcastu v minutách - workaround pro zastaveny advertising bez vedomi aplikace)
  • smsTimeoutSeconds (timeout na automatické ověření SMS, default = 20)
  • criticalExpositionRssi (pro in-app statistiky, úroveň rssi kdy je kontakt nebezpečný, číslo, default = -75)
  • uploadWaitingMinutes(doba mezi uploady, v minutách, číslo, default = 15)
  • persistDataDays(počet dní, jak dlouho se mají držet data v telefonu, default = 14)
  • faqLink (odkaz na FAQ - vede z obrazovky Kontakty)
  • importantLink (odkaz na důležité kontakty - vede z obrazovky Kontakty)
  • emergencyNumber (Nouzové číslo - 1212)
  • proclamationLink (Odkaz na prohlášení o podpoře - vede z úvodní obrazovky a z nápovědy)
  • tutorialLink (Odkaz na návod k telefonu - vypnutí optimalizací baterie)

Jak bude erouska 2.0 fungovat s Exposure Notifications Express systemem?

Nejde o report issue, spise o dotaz, protoze ted uplne presne nechapu jak bude erouska 2.0 fungovat s Exposure Notifications Express systemem.

https://9to5mac.com/2020/09/01/covid-19-exposure-ios-13-7-built-in/

Zda se, ze tato funkce nevyzaduje zadne externi aplikace. V podstate se stat jen opt-inuje k pouziti express systemu kde zdeli sve podminky a zbytek uz potom funguje klasicky v OS. Melo by to byt kompatibilni i mezi iOS <-> Android.

Muj dotaz tedy je, prinasi v tomto smeru erouska 2.0 nejakou vyhodu proc ji mit nainstalovanou?
Popripade nebude dochazet k hadani integrovane funkce a externi aplikace?

Diky

Aktualizace “Aktuálně” pomocí pull-to-refresh

Nechal jsem od včera zapnutou eRoušku na pozadí a chtěl se v ní dnes podívat na Aktuálni data. Bohužel jediný způsob jak data aktualizovat bylo restartovat aplikaci. Bylo by možné data aktualizovat automaticky nebo přidat pull-to-refresh? :)

ContactTracing

Zdravím,
nejprve samozřejmě díky za chvályhodnou iniciativu. Asi jste už slyšeli o alternativním řešení, skrze framework ContactTracing. Měl jsem trochu času, tak jsem zkusil naimplementovat základní řešení na základě článku na https://nshipster.com/contact-tracing/ do branche https://github.com/janremes/erouska-ios/tree/feature/jr/contact-tracing-test

Podle mě by to mohlo mít základní výhody:

  1. Mělo by to umět používat advertising i v backgroundu bez omezení
  2. Pravděpodobně to nebude tolik žrát baterku

Já jsem zatím naimplementoval protokoly pro známé API a napsal si k tomu vlastní providery, aby se to dalo začít testovat.

Tohle issue zakládám jestli by byl teoreticky zájem to dokončit a připravit PR? Napojit na Realm atd.

Ve finále by to potřebovalo alespoň minimální backend API na sdílení daily keys a označení, které keys jsou exposed. Aby se ty keys mohli předat ContactTracingu. Jestli to je blbost a nemá to smysl řešit dál, tak také dejte vědět. Díky!

implementace Apple COVID-19 exposure API

Zvazuje se aplikaci prepracovat tak aby pouzivala oficialni Apple COVID-19 Expose API?
Prijde me ze soucasne reseni ma na iOS problemy s detekci kdyz bezi na pozadi, velmi casto nenfunguje, a neustale mit otevrenou aplikaci je neprakticke.

Podle poslednich informaci ma byt erouska take soucasti oficialni chytre karanteny takze by to mel byt kandidat prave na toto reseni? Myslim ze Apple prave povoluje pouze jednu aplikaci na zemi - asi by davalo smyl kdyby to byla prave erouska?

zaznam kontaktu na pozadi nefunguje

iOS 13.4.1 iP 8, ver 1.1
-Kdyz upozadenu iOS eRousku polozim vedle Android eRousky:
android rozpozna blizke setkani, iOS bohuzel az po prepnuti aplikace do popredi

Jak detekovat fungující eroušku

Zdravím,
omlouvám se pokud sem dotazy nepatří, ale připadalo mi že to možná může být užitečné nebo inspirativní pro ostatní vývojáře.

Až se zruší lockdown (který prý neexistuje ;-)), tak by provozovatelé restaurací a událostí možná chtěli pouštět jen zákazníky se zapnutou erouškou (nebo ekvivalentem) jak to fungovalo v Číně. Přemýšlím jak toto ověřování dělat automatizovaně (např. mobilem nebo klidně turniketem) - mobil se přiloží a zařízení ověří že Exposure Notification API v tomto telefonu komunikuje.

Jde to tak jak si představuji?

Chtělo by se někomu kvalifikovanému minimálně nastínit jak by se to dalo implementovat?

Osobně mě zajímá hlavně implementace v existujícím přístupovém systému, která běží na ESP32 kontroléru, který má Bluetooth 5 (tedy docela přesné měření vzdálenosti a směru) a MicroPython (dokumentace BLE). Nic ale nebrání kdyby to bylo uvolněno jako samostatná knihovna pro MicroPython. Udělat pak "verifikační zařízení" co se rozsvítí když se přiloží mobil by pak byla brnkačka.

K zamyšlení - tab Moje data

Celkově mi ta obrazovka přijde taková „přetechnizovaná“. Myslím pro běžné smrtelníky.

Screen Shot 2020-04-12 at 12 28 57

Úvodní text

Vyhledávání ostatních zařízení ve vašem okolí je na telefonech iPhone při zhasnutém displeji méně účinné.

  • Aplikace pro iPhone, netřeba zdůrazňovat na telefonech iPhone.
  • Věta říká, že je to méně účinné, tj. říká co nefunguje, ale neříká jak to zlepšit.

Osobně bych to přepsal na něco jako:

Pro účinnější vyhledávání ostatních zařízení doporučujeme nezamykat telefon a nechat aplikaci spuštěnou.

Případně celé vyhodil neb se to duplikuje s textem na tabu eRouška (Na místech s větší koncentrací lidí nechte aplikaci spuštěnou při ...).

Tabulka

  • Kdo z nich ví co je RSSI?
  • Kdo z nich ví co je ID?
  • Zbývá Datum & Čas, k čemu to těm lidem je?

Předpokládám, že ten důvod je: ukázat lidem co sdílejí. IMHO lepší by bylo:

  • Dát tam počet všech setkání
  • Dát tam počet blízkých setkání
  • Nad tlačítko Odeslat data dát další vysvětlení co to udělá

Tlačítko Odeslat data

  • Zdůraznil bych anonymizovaná
  • Nad to tlačítko přidal vysvětlující text

Neboli bych udělal něco na tento způsob:

Screen Shot 2020-04-12 at 13 04 43

Nezapomenout, že ...

  • spousta lidí se bojí sdílet data,
  • je potřeba zdůraznit slovo anonymizované,
  • místo RSSI, ID, ... jim ukázat jen počet setkání, nestrašit je informacemi, kterým nerozumí („Co je RSSI?“ Není to náhodou místo kde jsem byl? „Co je ID?“ Není to identifikátor nějakého místa?)

Just my $0.02 ...

Verze 1.2 nelze spustit

Po aktualizaci na verzi 1.2 aplikace nelze nadale pouzit.
Po spusteni ukazuje spashscreen ze je k dispozici novejsi aktualizace, ta ale samozrejme neexistuje

Nelze aktivovat na iPhone SE (starší iOS)

Ačkoli mi App Store povolil na tomto starším mobilu instalaci starší verze, všechny pokusy o ověření telefonního čísla selhávají s messageboxem. Je to škoda, je to poměrně oblíbený model.

Nešlo by udělat build kde by to číslo už nebylo vyžadováno, jako u té nejnovější verze? Uprímně to číslo na hygienu byl pro mě show-stopper, nainstaloval jsem si na svém telefonu až tu verzi 2.1 kde to už není.

FYI na iPhone 11 vše funguje skvěle, díky.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.