/immuni-app-ios

Official repository for the iOS version of the immuni application

Primary LanguageSwiftGNU Affero General Public License v3.0AGPL-3.0

Immuni iOS


GitHub release (latest SemVer) Circle CI Status

Table of contents

Context

This repository contains the source code of Immuni's iOS client. More detailed information about Immuni can be found in the following documents:

Please take the time to read and consider these documents in full before digging into the source code or opening an Issue. They contain a lot of details that are fundamental to understanding the source code and this repository's documentation.

Installation

The recommended method requires that Xcode 11.5 and Brew are installed on your Mac. If you would prefer to follow a custom method, you have the option not to install Brew. Please refer to the Makefile to check which dependencies are needed; you may install those manually instead.

git clone https://github.com/immuni-app/immuni-app-ios.git
cd immuni-app-ios

# This command will install the environment needed to run the project using Brew.
# If you prefer to install them manually, check the Makefile.
# Note: this step should be done just once
make setup
make immuni

Please note the following:

  • The project may be built and run in the simulator.
  • If you wish to install the application on a real device, you will need to join the Apple Developer Program and sign the App with your certificate.
  • Apple requires a special entitlement to make the Exposure Notification system work. To obtain this entitlement, you must be either a government entity or a developer approved by a government entity to develop an application on behalf of a government for COVID-19 response efforts. This is stated in the APIs addendum. You should remove Exposure Notification entitlements from the entitlements file before compiling the application. You may build and use the application, but you will not be able to use the underlying Exposure Notification system.

For more information about how the project is generated and structured, please refer to the CONTRIBUTING file.

UI testing

The repository contains a system that can generate snapshots of the application's UI in different contexts (e.g., in various languages). This is a good way of checking the UI's issues and having an overview of the various UI states. To generate them, set up the project and run make run_uitests. The generated screenshots are located in the UITests/Screenshots folder.

Please be aware that this process may take some time, depending on your computer's hardware.

Checking the build

In addition to making the code open-source, we wish to help people verify that builds published on the App Store are coming from a specific commit of this repository. Please refer to the Immuni Technology Description for a complete overview of the goals and status of this effort.

Currently, we have a working open continuous integration for building the client. Here is the full specification. When it comes to reproducible builds, we will instead open an issue explaining what we have done so far and any missing steps.

Contributing

Contributions are most welcome. Before proceeding, please read the Code of Conduct for guidance on how to approach the community and create a positive environment. Additionally, please read our CONTRIBUTING file, which contains guidance on ensuring a smooth contribution process.

The Immuni project is composed of different repositories—one for each component or service. Please use this repository for contributions strictly relevant to the Immuni iOS client. To propose a feature request, please open an issue in the Documentation repository. This lets everyone involved see it, consider it, and participate in the discussion. Opening an issue or pull request in this repository may slow down the overall process.

Contributors

Here is a list of Immuni's contributors. Thank you to everyone involved for improving Immuni, day by day.

License

Authors / Copyright

Copyright 2020 (c) Presidenza del Consiglio dei Ministri.

Please check the AUTHORS file for extended reference.

Third-party component licenses

Tools

Name License
Brew BSD 2-Clause 'Simplified'
Cocoapods MIT
CommitLint MIT
Danger MIT
SwiftFormat MIT
SwiftGen MIT
SwiftLint MIT
XcodeGen MIT

Libraries

Name License
Katana MIT
Tempura MIT
Alamofire MIT
BonMot MIT
Hydra MIT
Lottie Apache 2.0
PinLayout MIT
SwiftLog Apache 2.0
ZIPFoundation MIT

License details

The licence for this repository is a GNU Affero General Public Licence version 3 (SPDX: AGPL-3.0). Please see the LICENSE file for full reference.