Code Monkey home page Code Monkey logo

immuni-app-ios's Introduction

Immuni iOS


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.

immuni-app-ios's People

Contributors

astagi avatar bolismauro avatar dependabot[bot] avatar eliseomartelli avatar immuniopensource avatar immunistaff avatar lordisturbia avatar lspinucci avatar macteo avatar marcobuster avatar paridebifulco avatar sbeff avatar sebaker88 avatar sklivvz avatar valerio-castelli 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

immuni-app-ios's Issues

[FEAT] UI Tests don't support dynamic type settings

Is your feature request related to a problem? Please describe it.
Immuni supports Dynamic Type and it would be great to generate screenshots for various configurations of this accessibility setting. However, at the current stage, the python script that runs the UI tests doesn't take this into account.

At the current stage, it looks like there is no easy way to set up this behavior from the command line.

Additional context
As a workaround, we now manually change the setting of the simulators before running the tests, which is not handy

[GENERAL] Unable to install (my fault)

Hi, yesterday i had an issue with the entitlements and, thanks to @bolismauro, i solved it.

Nevertheless, fault of my inexperience, i can't install app on my device.

Below, the step i followed:
. cloned git repo
. make setup and make immuni
. deleted entries about exposure notification system in the two .entitlements files
. pod install

Now, when i try to build the xcworkspace file this errors appear:

Schermata 2020-05-26 alle 14 22 51

I'm on xcode 13.5 and i have an apple developer paid account.

[BUG] Endpoints are not working

Describe the bug
The application currently points to endpoints that are not publicly accessible. The application works nonetheless, however it would be better to have working endpoints.

To Reproduce

  1. Open the application
  2. Observe that the configuration is not fetched

Expected behavior
The application should be able to reach remote endpoints

Smartphone (please complete the following information):

  • Device: any
  • OS: iOS 13+
  • Version 1

[BUG] Privacy screen doesn't scroll

Describe the bug

The Privacy screen doesn't scroll to the bottom to show the checkboxes when the user presses the action button.

To Reproduce

  1. Go to the 'Privacy View'
  2. Tap on 'Avanti'
  3. Nothing happens
    Expected behaviour

When the user presses the action button the view should scroll down so the cells with checkboxes can become visibile.

Screenshots

Not scrolling down

Simulator Screen Shot - iPhone 11 - 2020-05-25 at 11 43 13

Screenshot 2020-05-25 at 11 09 13

Smartphone (please complete the following information):

  • Device: iPhone 11
  • OS: iOS 13.5
  • Version: 1

Additional context

This is a usability issue, if the user manually scrolls down the cells can be checked.

[FEAT] English language

The app interface doesn't support English language.

I think this feature is important considering the presence of non-italian speakers in the country like seasonal workers and immigrants.

Also Localizable.lproj for en-GB and de files contain entries in Italian
App/Resources/en-GB.lproj/Localizable.strings
App/Resources/de.lproj/Localizable.strings

[BUG] No such module 'ExposureNotification'

After executing all the instructions in README, I tried to launch the app both on the simulator and on my device, going to delete Exposure Notification entitlements from the entitlements file. But when I try to launch the app from Xcode I always get the following error: No such module 'ExposureNotification'. Because obviously xcode cannot import this package present in some files (like: /Modules/Models/Configuration.swift)

XCode version: 11.1
OSx: 10.15.4 (Catalina)

[BUG] A user who is positive receives notifications for `at risk` contacts

Describe the bug
A user who is positive receives notifications for at risk contacts

To Reproduce

  1. Put device A and B and C in contact for ~10 minutes
  2. A turns positive
  3. B turns positive
  4. Observe A receiving the you had a contact at risk notification

Expected behaviour
When a user is positive they stop receiving alerts for contacts at risk

[GENERAL] Licenza software

In generale la licenza GPL (ed in particolare la AGPLv3 che questo repository utilizza) non è compatibile con la distribuzione nell'App Store.
Questo non è un problema se chi effettua la distribuzione detiene i diritti del codice, in quanto può creare il binario e ridistribuirlo secondo la licenza dell'App Store.
L'unico problema deriva da eventuali contributi in termini di codice da persone terze, le quali dovranno rilasciare le modifiche con una licenza abbastanza permissiva da permettere la pubblicazione.
Non sono un avvocato, e questo non è un consiglio di natura legale, semplicemente un avviso per evitare futuri mal di testa.

[GENERAL] German language

If there's need I could translate the de lproj strings into german.
Is someone already working on it?

[GENERAL] No .Xcodeproject

Issue content

Hi,
I've done all steps with success (I have no errors), but I can't find the .xcodeproject file in order to open it in Xcode 11.5. What should I do? Thanks.

[BUG] Missing or placeholder content to change

Describe the bug
There are several missing/placeholder/not working parts that will need to be changed before releasing:

  • TOS are missing
  • Privacy Policy is missing
  • FAQ are placeholder/not final
  • Customer Support Button is unfunctional in settings

[BUG][Onboarding] `How it works` has CTA in onboarding

Describe the bug
How it works has CTA in onboarding while it should only be present in the Home tile

To Reproduce

  1. Launch the app and proceed with onboarding
  2. Select Scopri di più
  3. Observe the CTA taking to FAQ being present

Expected behaviour
FAQ are contained in the How it works only when opened from the Home tile

Screenshot 2020-05-25 at 22 59 56

[GENERAL] Cannot install the app

Is your feature request related to a problem? Please describe it.
Scuse me but I can’t install the app because the terminal doesn’t find the immuni.xcworkspace

[FEAT] CommitLint pre-hook

The CI checks the commit conventions. To prevent to note the problem just in CI, we should add a check in the pre-commit hook. This would require an extra tool installation on the client though.

[GENERAL] Security contact

Hello,
I could not find any security contact in the README or elsewhere.
What address can I use to reach you privately about a potential security issue?

[BUG] make setup does not work on Catalina

Describe the bug
the setup procedure on Catalina cannot performed as described

To Reproduce
make setup will give a permission denied error installing cocoapods
if you do sudo make setup you will get an error because brew cannot be executed under sudo

Expected behaviour
make setup should work just fine

I fixed adding a "sudo" in Makefile to install cocoapods but this could be considered an unsafe behaviour.

I suggest to add cocoapods to be a separate prerequisite to be installed before make setup using sudo.

[GENERAL] The .ipa doesn't install

I tried to install the first released .ipa trough xCode 11.5 but it gives me an error.
Should I try something different?
(maybe it has to be signed with it.ministerodellasalute.immuni certs?)

[BUG] Capitalization issues in FAQ copy

Describe the bug

Two capitalization issues in the FAQ for consistency with the rest of the copy:
immuni >> Immuni
bluetooth >> Bluetooth

To Reproduce

  1. Go to FAQ
    --> In one instance "immuni" and "bluetooth" are lowercase.

[BUG] If tapping on Settings while in a Setting Subsection nothing will happen

Describe the bug
If tapping on Settings while in a Setting Subsection nothing will happen. It would be nicer if while the user is inside a subsection of settings, if tapping on Settings on the tab bar, the Settings Menu would open.

To Reproduce

  1. Go to Settings > Open Caricamento Codici
  2. Tap on Settings in the tab bar
  3. Observe nothing happening

IMG_6B5ED87A723B-1

[BUG] Wrong origin of sticky cell frame on scroll

Describe the bug

Hi, spooners!

When in a modal sheet you scroll fast a collection View with a sticky header cell the cell is not rendered with the correct frame origin

To Reproduce

  1. Go to 'Home' tab section
  2. Click on 'Cosa puoi fare per proteggerti' cell
  3. Scroll down and up

Screenshots

Schermata 2020-05-25 alle 21 18 54

issue

Smartphone (please complete the following information):

  • Device: iPhone 11 Pro Max (Simulator)
  • OS: iOS13.5
  • Version: beta

[FEAT] Jailbreak detection

Is your feature request related to a problem? Please describe it.
Implement Jailbreak detection

Describe the solution you'd like
It'd be good for the app to see whether a phone is jailbroken or not

[BUG] Loading pop up disappears if putting the app in bkg and reopening while verifying the code

Describe the bug
Loading pop disappears if putting the app in bkg and reopening while verifying code the loading pop up won't appear any longer. Process will still be ongoing and working but it could be confusing for a user as there won't be any on-screen progress

To Reproduce

  1. Go to Caricamento dati
  2. Click on Verifica
  3. Tap home button to put the app in background and resume it
    --> Observe the loading pop up not appearing anymore

RPReplay_Final1590852551.MP4.zip

[BUG] 'Enable Notifications' not working in onboarding

Describe the bug
During onboarding, the Enable notifications button won't click/won't let me proceed.

To Reproduce

Steps to reproduce the behaviour:

  1. Open app
  2. Successfully enter province and region
  3. Attempt to enable exposure notifications

Expected behaviour

A simple click of ‘enable’ should let me proceed.

Screenshots

The iOS app won’t let me enable notifications—it tells me to click Enable in a pop up that doesn’t arrive.
IMG_1029
IMG_1030

Smartphone (please complete the following information):

  • Device: [ iPhone X]
  • OS: [ iOS13.5]
  • Version [1]

Additional context

Signin and Capabilities

cannot run the app either on the simulator and device.

Provisioning profile "Provisoning Profile Name" doesn't include the com.apple.developer.exposure-notification,
com.apple.developer.exposure-notification-test,
and com.apple.developer.exposure-notification-test-skip-file-verification entitlements and doesn't match the entitlements file's value for the com.apple.developer.default-data-protection entitlement.

what can i do?

[GENERAL] Run app

Issue content

Hy, can I run the app without Apple developer program? Thanks

[FEAT] Hide content when multi-tasking

Is your feature request related to a problem? Please describe it.
iOS takes and stores (multiple) screenshots of the app in the filesystem to implement the multi-tasking functionality. We should hide the UI when moving from foreground to background.

Describe the solution you'd like
The app should hide the content to prevent the screenshot from capturing sensible information

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.