Koronavilkku - the official COVID-19 Exposure Notifications app

Overview

Koronavilkku iOS app

Koronavilkku is the official COVID-19 Exposure Notifications app for Finland, maintained by the Finnish Institute for Health and Welfare (THL). It uses the ExposureNotification framework, a joint effort between Apple and Google to provide the core functionality for building iOS and Android apps to notify users of possible exposure to confirmed COVID-19 cases.

https://developer.apple.com/exposure-notification/

Setting up

Clone this Git repository, open Koronavilkku.xcworkspace and run the app.

We've included a mock ExposureManager that works in the Simulator, but in order to run the app on a real device with the real Exposure Notifications API, you need to have a provisioning profile with the correct entitlements from Apple.

Configure the local environment

Under ./Configuration you can find the default configuration file Main.xcconfig. You can locally override the configuration values to match your environment by placing them in LocalEnvironment.xcconfig (which is not checked into the VCS).

Requirements

  • Xcode 11.5 or higher
  • iOS 13.5 or higher

External dependencies

Dependencies are managed with Swift Package Manager through Xcode. Required packages should be downloaded by Xcode automatically, but if not, select File → Swift Packages → Resolve Package Versions.

SnapKit

DSL for adding autolayout constraints to UIKit components

ZipFoundation

Library for easy Zip-file handling

TrustKit

Framework for SSL public key pinning and reporting

Backend

See koronavilkku-backend for information on application backend.

Contributing

We are grateful for all the people who have contributed so far. Due to tight schedule of Koronavilkku release we had no time to hone the open source contribution process to the very last detail. This has caused for some contributors to do work we cannot accept due to legal details or design choices that have been made during development. For this we are sorry.

IMPORTANT See further details from CONTRIBUTING.md

Comments
  • Koronavilkku is not doing exposure checks

    Koronavilkku is not doing exposure checks

    I'm running iOS 13.6.1 on iPhone SE 2020. Installed Koronavilkku same day it was initially released. Now running 1.0.1 (232). Koronavilkku is not doing exposure checks periodically. The only check is done 3. Sep 2020 (6 keys). Tried to uninstall & reinstall the app and reboot the phone with no help. App seems to be in good state ("Koronavilkku käytössä").

    BE12C4D4-E874-4194-8797-3095A77AA257_1_102_o BE15C2FD-6C12-4BA1-9879-1643CE3345AB_1_105_c

    bug 
    opened by lardois 14
  • Can't enable exposure notifications on the app - iOS 13.7

    Can't enable exposure notifications on the app - iOS 13.7

    I installed the app after updating iOS to 13.7. When I first opened the app I accepted the terms and continued. Then I got the system permission prompt about enabling exposure notifications and I chose Enable.

    However on the main screen the app says "Koronavilkku ei käytössä" and tapping the button "Ota käyttöön" below it does nothing. Also if I try to enable exposure notifications from the settings I can tap "Ota käyttöön" button but after returning to the main settings page the status still says "Ei käytössä". I have tried both restarting and reinstalling the app, but to no avail.

    opened by lauri-n 6
  • Possibility to run on iOS 12.5?

    Possibility to run on iOS 12.5?

    Since Apple released the exposure notification support (at least used in Britain) for iPhone 6/5s in December (with the OS version 12.5) would it be possible for Koronavilkku to work on these older iPhones, too? https://www.bbc.com/news/technology-55317202

    enhancement 
    opened by akutalikka 4
  • Koronavilkku reports exposure but no key matches exist in logs

    Koronavilkku reports exposure but no key matches exist in logs

    Koronavilkku reports a possible exposure. Nevertheless, all of the log entries (altistustarkistukset) for the past two weeks have zero key hits (avainosumien määrä 0). The timestamp of the newest log entry is after the exposure became visible in the app.

    If I have understood correctly, an exposure can only be reported if there is match found between the keys in my phone and the ones on the server (from infected people). Thus, there should be at least one key hit in the logs.

    image image image

    • Device: iPhone 8
    • OS Version: iOS 14.0.1
    • Koronavilkku: 1.1.0 (289)
    bug 
    opened by laaksom3 3
  • possible bug with ios14

    possible bug with ios14

    IOS own functionality shows that there's two key matches (avainosumien määrä) but Koronavillu app says that there's no matches ("Ei havaittu altistumisia" ja tarkistettu viimeksi: 2 minuttia sitten.).

    20200919_174145000_iOS 20200919_174124000_iOS

    I have rebooted IOS but no changes. app & phone info: Koronavilkku 1.0.1 (232) iPhone 11 Pro Max with IOS 14.0

    invalid 
    opened by niilo 2
  • Exposures element has no horizontal spacing between elements

    Exposures element has no horizontal spacing between elements

    The missing spacing becomes obvious at least in Swedish when using a particular screen width (iPhone 6 / iPhone X), when the word "som" comes too close to the checkmark. 20 points of offset would be enough to fix it, as seen on the right image. Simulator Screen Shot - iPhone SE (2nd generation) - 2020-09-13 at 01 10 29

    bug 
    opened by repomies 2
  • Reported keyCounts/hashes identical between devices

    Reported keyCounts/hashes identical between devices

    Not sure if this is a bug since I'm not particularly familiar with the setup, but thought I'd report this just in case.

    Image from iOS Settings > Privacy > Health > COVID-19 exposure logging > Exposure checks > Export

    When viewing exposure checks on iPhone, we expected to see how many other devices using KoronaVilkku the phone has come into notable contact with, and is now checking for exposure as a result. This seems to report the same information regardless of user however. Not sure if this is a bug in functionality or just an oddity in reporting exposure check data, but checked keyCounts and hashes are identical between two iPhone users and one Android user in different locales in Uusimaa (albeit hash doesn't match in Android device).

    iPhone 1 { "Build" : "17G80", "ExportVersion" : 1, "ExposureChecks" : [ { "Hash" : "FDD34C6170CB06668BE36457178908925ADE485B21366281981FE5BABD77C696", "RandomIDCount" : 6, "MatchCount" : 0, "DataSource" : "fi.thl.koronahaavi", "Timestamp" : "2020-09-03 07:20:17 +0300" }, { "Hash" : "7CA1AD8DA7964C70E4EA6903780CABC7F224209111F9F12AE0FB28065D864B5A", "RandomIDCount" : 19, "MatchCount" : 0, "DataSource" : "fi.thl.koronahaavi", "Timestamp" : "2020-09-04 08:48:21 +0300" } ], "DeviceProductType" : "iPhone8,2" }

    iPhone 2 { "Build" : "17G80", "ExportVersion" : 1, "ExposureChecks" : [ { "Hash" : "FDD34C6170CB06668BE36457178908925ADE485B21366281981FE5BABD77C696", "RandomIDCount" : 6, "MatchCount" : 0, "DataSource" : "fi.thl.koronahaavi", "Timestamp" : "2020-09-03 07:42:58 +0300" }, { "Hash" : "7CA1AD8DA7964C70E4EA6903780CABC7F224209111F9F12AE0FB28065D864B5A", "RandomIDCount" : 19, "MatchCount" : 0, "DataSource" : "fi.thl.koronahaavi", "Timestamp" : "2020-09-04 07:24:22 +0300" } ], "DeviceProductType" : "iPhone8,4" }

    Android {"timestamp":"September 3, 2020, 08:45", "keyCount":6, "matchesCount":0, "appName":"Koronavilkku", "hash":"\/dNMYXDLBmaL42RXF4kIklreSFshNmKBmB\/lur13xpY="}, {"timestamp":"September 4, 2020, 09:00", "keyCount":19, "matchesCount":0, "appName":"Koronavilkku", "hash":"fKGtjaeWTHDk6mkDeAyrx\/IkIJER+fEq4PsoBl2GS1o="}

    Perhaps I'm expecting the wrong thing from Exposure Check reporting, feel free to close this if this is the intended functionality.

    bug 
    opened by lauramatilda 2
  • English localization

    English localization

    Hi!

    I've had few colleagues wonder if there's going to be an English language version available soon? I took a look at the localization in this project at it seems that translating them shouldn't be a huge task, so is this something you would be open to receiving a pull request of?

    enhancement 
    opened by plahteenlahti 2
  • Is storing exposure date to UserDefaults necessary?

    Is storing exposure date to UserDefaults necessary?

    Currently the exposure date is stored to UserDefaults, but looks like it's not used for anything. Even though Apple says "This property may report a date of relative precision, such as within one day of the actual event." maybe this date info could be fetched from UserDefaults on an jailbroken iPhone and then used to figure out who the infected person was?

    Edit: Noticed that it's used for figuring the retention time. Could this still be a privacy issue?

    enhancement 
    opened by maitto 2
  • Feature/app shut down

    Feature/app shut down

    We welcome contributions from the public. However there are some guidelines to follow:

    1. We cannot accept new language versions and translations from community, this is because:
      • Some expressions used within the app are strictly coupled with Finnish law and thus must meet it's requirements
      • There's also a lot of domain specific terminology involved which must be handled by THL's board of experts
      • Small typo fixes can be processed manually but better way to report those is to raise an issue. We can then manually credit changes to issue's original author
    2. Prior to committing to work, create an issue describing a problem, bug or enhancement you would to like to work on
    3. Wait for discussion on the issue and how it should be solved
    4. Wait for main contributors of the repository to handle the issue and clear it for implementation
    5. Embrace the feedback and be patient. We are working as fast as we can to improve Koronavilkku and community's help is much appreciated

    Please always add reference to related issue. You can bring up drop-down of suggested issues by typing #.

    This pull request resolves # .

    Also, remember to update CHANGELOG.md before merging your changes.

    opened by tmengesh 1
  • Feature/581 en api v2

    Feature/581 en api v2

    Modified app to use version 2 of the Exposure Notifications API.

    • Instead of displaying the number of exposures, the app now displays the number of days for which new exposures have been detected.
    • Only exposures newer than the latest currently known exposure are handled.
    • The app is now responsible for displaying local notifications about exposures.
    • Minimum supported iOS version increased to 13.7 / only v2 API is supported by the app.
    • App badge displays the number of 'active' potential exposures (the same number as in the app UI).

    Couple of notes:

    • Plural support for text ItemDaysValue could be removed as unnecessary if the final swedish version doesn't need it either (pcs).
    • The local notification is removed only if the user taps it or explicitly removes it, i.e. it isn't removed when app is opened e.g. via homescreen.
    • Having 2 separate implementation of ExposureNotification protocol might seem a bit excessive now that only the latest exposure date needs to be known for the v2 case too. But I wanted to keep the v1 era data objects as-is (and not add any sort of type specifying field) so kept the 2 implementations after all.
    opened by solita-pekko 1
Releases(v2.5.0)
  • v2.5.0(Apr 28, 2022)

  • v2.4.3(Feb 16, 2022)

  • v2.4.2(Aug 11, 2021)

    The time periods used in Koronavilkku have been updated in accordance with recently updated national guidelines for COVID-19.

    Changes in the updated version:

    • In the future, those who have received a notification of potential exposure are advised to follow the instructions provided in the application for the next 10 days instead of 14 days.
    • Koronavilkku will evaluate exposures that have taken place in the last 10 days.
    Source code(tar.gz)
    Source code(zip)
  • v2.4.1(Jun 18, 2021)

    Koronavilkku has been updated with new instructions for those who have received an exposure notification in line with recently updated national guidelines.

    An accessibility statement has been added.

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Apr 21, 2021)

    The application now uses a new version of the exposure notification system. This improves the accuracy of identifying potential exposures. In addition, instead of estimating an individual encounter, the total risk of encounters that have occurred during the same day is calculated. The update will also speed up the delivery of exposure notifications, as data can now be delivered six times a day.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.1(Apr 13, 2021)

    The application asks for permission to show notifications. Koronavilkku needs permission to show exposure notifications in the future, due to changes in the Exposure Notification API.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Mar 15, 2021)

    Koronavilkku has been updated with new instructions for those who have received an exposure notification in line with recently updated national guidelines.

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Feb 2, 2021)

    The time periods used in Koronavilkku have been updated in accordance with recently updated national guidelines for COVID-19. Changes in the updated version:

    • In the future, those who have received a notification of potential exposure are advised to follow the instructions provided in the application for the next 14 days instead of 10 days.
    • Koronavilkku will evaluate exposures that have taken place in the last 14 days.
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Jan 7, 2021)

    Koronavilkku is now compatible with several European coronavirus applications:

    • You can get a notification of potential exposure even if the person reporting their infection is using another European coronavirus application.
    • If you are diagnosed with COVID-19, you can optionally send information about it to the users of other European coronavirus applications.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Nov 25, 2020)

    The clarity and usability of Koronavilkku have been improved:

    • A new button in Koronavilkku can be used to initiate checking for potential exposures, if more than 24 hours have passed since previous check.
    • The number of valid exposure notifications and their arrival dates are displayed.

    The parameters and calculation model used for exposure assessment have been updated in order to increase the reliability of detecting e.g. long-term family exposures.

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Oct 29, 2020)

    The time periods used in Koronavilkku have been updated in accordance with recently updated national guidelines for COVID-19.

    Changes in the updated version:

    • In the future, those who have received a notification of potential exposure are advised to follow the instructions provided in the application for the next 10 days instead of 14 days.
    • Koronavilkku will evaluate exposures that have taken place in the last 10 days.
    • Some general improvements.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Oct 7, 2020)

    Koronavilkku is now available also in English!

    In addition to general improvements, the following changes are included:

    • The user can change the language in the app and override device default language.
    • A list of open source libraries and their license information has been added.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Sep 24, 2020)

    Background task improvements

    • Schedule the EN background task to run max 6 times a day to prevent it being run excessively by the system
    • Ensure background task being rescheduled even if current task is unexpectedly terminated

    Improve transparency

    • Added Git commit hash to version information in the Settings tab
    Source code(tar.gz)
    Source code(zip)
Owner
Finnish Institute for Health and Welfare (THL)
THL studies, monitors, and develops measures to promote the well-being and health of the population in Finland.
Finnish Institute for Health and Welfare (THL)
Native iOS app using the exposure notification framework from Apple.

Corona Warn App - iOS Development • Documentation • Contribute • Support • Changelog • Licensing The goal of this project is to develop the official C

Corona-Warn-App 1.7k Dec 18, 2022
COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID

COVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab.

PathCheck Foundation 470 Nov 6, 2022
ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map

ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map, that shows how the infection has spread throughout Bulgaria.

scalefocus 16 Feb 9, 2022
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

Gabriel Denoni 11 Dec 27, 2021
YTS-App - Repository for the official Yeshivat Torat Shraga App

Yeshivat-Torat-Shraga Official repository for the Yeshivat Torat Shraga app. Wha

Yeshivat Torat Shraga 4 Dec 15, 2022
A SwiftUI iOS App and Vapor Server to send push notifications fueled by Siri Shortcuts.

Puffery An iOS App written in SwiftUI to send push notifications fueled by Siri Shortcuts. You can follow other's channels and directly receive update

Valentin Knabel 29 Oct 17, 2022
Official repository for Torat-Shraga app

Yeshivat-Torat-Shraga Official repository for the Yeshivat Torat Shraga app. What is this repository? This is where all code written for the Torat Shr

BenjiTusk 2 Jan 6, 2022
SwissCovid is the official contact tracing app of Switzerland

SwissCovid is the official contact tracing app of Switzerland. The app can be installed from the App Store. The app design, UX and implementation was done by Ubique.

SwissCovid 149 Dec 19, 2022
A simple App to Track the status of Covid-19 around the World. Using SwiftUI and GraphQL

CovidUI CovidUI is a simple App to Track the status of Covid-19 around the World. This is a simple App I made to track the spread of Covid-19 for me a

Mathias Quintero 77 Dec 14, 2022
Rakning C-19 is an app that can be downloaded voluntarily and facilitates the contact tracing process amidst the ongoing Covid-19 pandemic in Iceland

Rakning C-19 App Rakning C-19 is an app that can be downloaded voluntarily and facilitates the contact tracing process amidst the ongoing Covid-19 pan

Aranja 242 Nov 21, 2022
COVID Alert Mobile App

This repository implements a React Native client application for Apple/Google's Exposure Notification framework, informed by the guidance provided by Canada's Privacy Commissioners.

Canadian Digital Service – Service numérique canadien 900 Dec 21, 2022
Ready use service for Firebase. Included interface, recored devices and notifications.

SPProfiling Ready use service with using Firebase. Included interface, manage auth process, recored devices and profile data. Installation Ready for u

Ivan Vorobei 13 Oct 29, 2022
GitHub Notifications in your pocket.

Gitify Mobile If you are looking for the desktop version - manosim/gitify. Download Available for free on iOS & Android. App Store Google Play Store P

Manos Konstantinidis 98 Aug 8, 2022
COVID-19 SwiftUI Demo

COVID-19_SwiftUI_Demo About COVID-19_SwiftUI_Demo is the coronavirus information application using SwiftUI which is first introduced in WWDC19 keynote

Hưng Thái 17 Feb 9, 2022
Get notified about available COVID-19 vaccination appointments in Berlin's vaccination centers

VaccinationMonitor If you live in Berlin you might know how difficult it is to find an appointment to get a COVID-19 vaccination. This app notifies yo

Christian Lobach 8 Jan 14, 2022
EU Digital COVID Certificate Kit for the Apple Platform  (unofficial)

EU Digital COVID Certificate Kit A Swift Package to decode, verify and validate EU Digital COVID Certificates for iOS, tvOS, watchOS and macOS Disclai

Sven Tiigi 32 Oct 4, 2022
Covid 19 Tracing Mobile Application

PVAMU-COVID19-APP Covid 19 Tracing Mobile Application This is my Senior Design Project 2021-2022 Mobile applications are the new gateway to have easy

null 0 Nov 15, 2021
iOS 14 widget for stats on COVID -19.

A Covid-19 Tracking Widget for iOS 14 WidgetKit WidgetKit gives users ready access to content in apps by putting widgets on the iOS Home screen or mac

Aaryan Kothari 71 Jul 4, 2022
iOS application to help fight COVID-19

iOS application to help fight COVID-19 This app is aiming at helping fight COVID-19 spread by collecting anonymous data about people meeting each othe

Covid World 12 Feb 9, 2022