+
+ Permission (android.permission.*) |
+ Usage / Meaning |
+
+
+ INTERNET |
+ Allows the app to open network sockets (e.g. simple internet connectivity) |
+
+
+ ACCESS_NETWORK_STATE |
+ Allows the app to access information about networks (e.g. details about connection quality/state) |
+
+
+ CAMERA |
+ Allows the app to access device camera to scan QR codes |
+
+
+ NFC |
+ Allows the app to perform I/O operations over NFC |
+
+
+ RECEIVE_BOOT_COMPLETED |
+ Allows the app to receive the Intent.ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. Used for push notification. |
+
+
+ VIBRATE |
+ Allows the app to access the vibration motor. This allow the application to emit vibration. |
+
+
+ WAKE_LOCK |
+ Allows the app to use PowerManager WakeLocks to keep processor from sleeping or screen from dimming. Used for push notification. |
+
+
+ READ_APP_BADGE |
+ Allows the app to show notification badges on its icon. |
+
+
+ READ_CALENDAR |
+ Allows the app to read the user's calendar data. |
+
+
+ WRITE_CALENDAR |
+ Allows the app to write the user's calendar data. Used to automatically set reminders. |
+
+
+ READ_EXTERNAL_STORAGE |
+ Allows the app to read from external storage. Used to pick images from gallery with payment QRCode. |
+
+
+ WRITE_EXTERNAL_STORAGE |
+ Allows the app to write to external storage. Used to store images, certificates, etc. |
+
+
+ USE_FINGERPRINT |
+ Allows the app to use fingerprint hardware for biometric identification required from API level 23 until API level 28 |
+
+
+ USE_BIOMETRIC |
+ Allows the app to use device's available biometric identification system (Face unlock, Iris unlock, Fingerprint) required from API Level 28. |
+
+
+ SCHEDULE_EXACT_ALARM |
+ Allows the app to send local notifications. |
+
+
+ DOWNLOAD_WITHOUT_NOTIFICATION |
+ Allows the app to download files in background without promping a notification. |
+
+
Below there are the permissions required by the main android hardware manufacturers. Mainly used to manage notification badge icons.
-
-| Permission (manufacturer) | Usage / Meaning |
-| ----------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
-| com.anddoes.launcher.permission.UPDATE_COUNT | used for the notification badge |
-| com.google.android.c2dm.permission.RECEIVE | It is used when receiving a broadcast from GCM server that contains a GCM message. Used for push notification. |
-| com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE | It is used by Firebase to recognize where the app was installed from |
-| com.htc.launcher.permission.READ_SETTINGS | Used for the notification badge. Specific for HTC vendor. |
-| com.htc.launcher.permission.UPDATE_SHORTCUT | used for the notification badge |
-| com.huawei.android.launcher.permission.CHANGE_BADGE | Used for the notification badge. Specific for Huawei vendor. |
-| com.huawei.android.launcher.permission.READ_SETTINGS | used for the notification badge |
-| com.huawei.android.launcher.permission.WRITE_SETTINGS | used for the notification badge |
-| com.majeur.launcher.permission.UPDATE_BADGE | used for the notification badge |
-| com.oppo.launcher.permission.READ_SETTINGS | used for the notification badge |
-| com.oppo.launcher.permission.WRITE_SETTINGS | used for the notification badge |
-| com.sec.android.provider.badge.permission.READ | used for the notification badge |
-| com.sec.android.provider.badge.permission.WRITE | used for the notification badge |
-| com.sonyericsson.home.permission.BROADCAST_BADGE | used for the notification badge |
-| com.sonymobile.home.permission.PROVIDER_INSERT_BADGE | used for the notification badge |
-| me.everything.badger.permission.BADGE_COUNT_READ | used for the notification badge |
-| me.everything.badger.permission.BADGE_COUNT_WRITE | used for the notification badge |
-
-
-**ios**
-(more info about permissions requested by Apple [here](https://www.pivotaltracker.com/n/projects/2048617/stories/160232897))
-
-| Permission | Usage / Meaning |
-| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
-| NSAppleMusicUsageDescription | This key is required if your app uses APIs that access the user’s media library. |
-| NSBluetoothAlwaysUsageDescription | This key is required if your app uses the device’s Bluetooth interface. |
-| NSBluetoothPeripheralUsageDescription | This key is required if your app uses APIs that access Bluetooth peripherals and has a deployment target earlier than iOS 13. |
-| NSContactsUsageDescription | IO needs access to your contacts to let you add them in calendar events. |
-| NSLocationAlwaysUsageDescription | This key is required if your iOS app uses APIs that access the user’s location at all times and deploys to targets earlier than iOS 11. |
-| NSLocationUsageDescription | This key is required if your app uses APIs that access the user’s location information. |
-| NSLocationWhenInUseUsageDescription | This key is required if your iOS app uses APIs that access the user’s location information while the app is in use. |
-| NSMicrophoneUsageDescription | IO needs access to the microphone in case you want to leave a voice note. Used in the assistance flow. |
-| NSMotionUsageDescription | This key is required if your app uses APIs that access the device’s motion data. |
-| NSCalendarsUsageDescription | IO needs access to the calendar to add event reminders. |
-| NSCameraUsageDescription | IO needs access to the camera to scan QR codes. |
-| NSFaceIDUsageDescription | Enable Face ID for biometric identification. |
-| NSPhotoLibraryAddUsageDescription | This key is required if your app uses APIs that have write access to the user’s photo library. |
-| NSPhotoLibraryUsageDescription | IO needs access to the Photos to scan QR codes. |
-| NSSpeechRecognitionUsageDescription | This key is required if your app uses APIs that send user data to Apple’s speech recognition servers. Used in the assistance flow. |
-| Remote Notification | Request permission to receive remote push notification. |
-| NFC (Near Field Communication Tag Reading) | Request NFC capability. |
-
-
-## Main technologies used
-
-* [TypeScript](https://www.typescriptlang.org/)
-* [Redux](http://redux.js.org/)
-* [Redux Saga](https://redux-saga.js.org/)
-* [React Native](https://facebook.github.io/react-native)
-* [Native Base](http://nativebase.io)
-
-## Architecture
-
-### SPID Authentication
-
-The application relies on a [backend](https://github.com/pagopa/io-backend) for the authentication through SPID (the Public System for Digital Identity) and for interacting with the other components and APIs that are part of the [digital citizenship project](https://github.com/teamdigitale/digital-citizenship).
-
-The backend implements a SAML2 Service Provider that deals with user authentication with the SPID Identity Providers (IdP).
-
-The authentication between the application and the backend takes place via a session token, generated by the backend at the time of the authentication with the SPID IdP.
-
-Once the backend communicates the session token to the application, it is used for all subsequent calls that the application makes to the API exposed by the backend.
-
-The authentication flow is as follows:
-
-1. The user selects the IdP;
-1. The app opens a webview on the SAML SP authentication endpoint implemented in the backend, which specifies: the entity ID of the IdP selected by the user and, as returns URL, the URL of the endpoint that generates a new session token.
-1. The SAML SP logic takes over the authentication process by redirecting the user to the chosen IdP.
-1. After the authentication, a redirect is made from the IdP to the backend endpoint that deals with the generation of a new session token.
-1. The endpoint that generates a new token receives the SPID attributes via the HTTP header; then, it generates a new random session token and returns to the webview an HTTP redirect to an URL well-known containing the session token.
-1. The app, which monitors the webview, intercepts this URL before the HTTP request is made, extracts the session token and ends the authentication flow by closing the webview.
-1. Next, the session token is used by the app to make calls to the backend API.
-
-## How to contribute
-
-In the following there are instructions to build the app in your computer for development purposes.
-
-### Pre-requisites
-
-You need a recent macOS, Linux or Windows 10 based computer, and a Unix based development environment. On macOS and Linux this environment is available in the base install, while on Windows you need to install [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10), the Windows Subsystem for Linux.
-
-The following instructions have been tested on a macOS running Mojave, on Linux Ubuntu 18.04 and on Windows with Ubuntu 18.04 installed with WSL. The described procedure assume you are using the `bash` shell; they may work with other shells but you may need to tweak the configuration for your shell. In the following when we will refer to Linux we also mean Windows with WSL.
-
-#### Install NodeJS and Ruby
-
+
+
+ Permission (manufacturer) |
+ Usage / Meaning |
+
+
+ com.google.android.c2dm.permission.RECEIVE |
+ Allows the app to receive a broadcast from a GCM server that contains a GCM message. Used for push notification. |
+
+
+ com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE |
+ Allows the app to recognize where the app was installed from. Used for Firebase. |
+
+
+ com.anddoes.launcher.permission.UPDATE_COUNT |
+ Allows the app to use notification badges. |
+
+
+ com.htc.launcher.permission.READ_SETTINGS |
+ Allows the app to use notification badges. |
+
+
+ com.htc.launcher.permission.UPDATE_SHORTCUT |
+ Allows the app to use notification badges. |
+
+
+ com.huawei.android.launcher.permission.CHANGE_BADGE |
+ Allows the app to use notification badges. |
+
+
+ com.huawei.android.launcher.permission.READ_SETTINGS |
+ Allows the app to use notification badges. |
+
+
+ com.huawei.android.launcher.permission.WRITE_SETTINGS |
+ Allows the app to use notification badges. |
+
+
+ com.majeur.launcher.permission.UPDATE_BADGE |
+ Allows the app to use notification badges. |
+
+
+ com.oppo.launcher.permission.READ_SETTINGS |
+ Allows the app to use notification badges. |
+
+
+ com.oppo.launcher.permission.WRITE_SETTINGS |
+ Allows the app to use notification badgee. |
+
+
+ com.sec.android.provider.badge.permission.READ |
+ Allows the app to use notification badges. |
+
+
+ com.sec.android.provider.badge.permission.WRITE |
+ Allows the app to use notification badges. |
+
+
+ com.sonyericsson.home.permission.BROADCAST_BADGE |
+ Allows the app to use notification badges. |
+
+
+ com.sonymobile.home.permission.PROVIDER_INSERT_BADGE |
+ Allows the app to use notification badges. |
+
+
+ me.everything.badger.permission.BADGE_COUNT_READ |
+ Allows the app to use notification badges. |
+
+
+ me.everything.badger.permission.BADGE_COUNT_WRITE |
+ Allows the app to use notification badges. |
+
+
+ com.android.vending.CHECK_LICENSE |
+ Allows the app to access Google Play Licensing. |
+
+
+ com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY |
+ Allows the app to use the Samsung Developer SDK. Used for Samsung biometric identification. |
+
+
+ com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER |
+ Allows the app to access the fingerprint hardware for biometric identification. |
+
+
+