Diritti iOS

In iOS le app .NET multipiattaforma dell'interfaccia utente dell'app (.NET MAUI) vengono eseguite in una sandbox che fornisce un set di regole che limitano l'accesso tra l'app e le risorse di sistema o i dati utente. I diritti vengono usati per richiedere l'espansione della sandbox per offrire all'app funzionalità aggiuntive, ad esempio l'integrazione con Siri. Tutti i diritti usati dall'app devono essere specificati nel file Entitlements.plist dell'app. Per altre informazioni sui diritti, vedere Entitlement su developer.apple.com.

Oltre a specificare entitlement, il file Entitlements.plist viene usato per firmare il codice dell'app. Quando si firma il codice dell'app, il file entitlements viene combinato con le informazioni dell'account sviluppatore Apple e altre informazioni sul progetto per applicare un set finale di diritti all'app.

I diritti sono strettamente correlati al concetto di funzionalità. Entrambi richiedono l'espansione della sandbox in cui viene eseguita l'app, per offrire funzionalità aggiuntive. I diritti vengono in genere aggiunti durante lo sviluppo dell'app, mentre le funzionalità vengono in genere aggiunte quando si firma l'app per la distribuzione. Tuttavia, quando il provisioning automatico è abilitato, l'aggiunta di determinati diritti all'app aggiornerà anche le funzionalità per l'app nel profilo di provisioning. Per altre informazioni, vedere Aggiungere funzionalità con Visual Studio.

Importante

Un file Entitlements.plist non è collegato a un account Apple Developer. Pertanto, quando crei un profilo di provisioning per la tua app, devi assicurarti che tutti i diritti usati dall'app vengano specificati anche come funzionalità nel profilo di provisioning. Per altre informazioni, vedere Funzionalità.

Aggiungere un file Entitlements.plist

Per aggiungere un nuovo file entitlements al progetto di app MAUI .NET, aggiungere un nuovo file XML denominato Entitlements.plist alla cartella Platforms\iOS del progetto dell'app. Aggiungere quindi il codice XML seguente al file:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>

Impostare i diritti

I diritti possono essere configurati in Visual Studio facendo doppio clic sul file Entitlements.plist per aprirlo nell'editor entitlement:

  1. In Esplora soluzioni fare doppio clic sul file Entitlements.plist dalla cartella Platforms > iOS del progetto di app .NET MAUI per aprirlo nell'editor entitlement.

  2. Nell'editor entitlement selezionare e configurare tutti i diritti richiesti dall'app:

    Editor entitlement per iOS di Visual Studio.

  3. Salvare le modifiche apportate al file Entitlements.plist per aggiungere le coppie chiave/valore entitlement al file.

Potrebbe anche essere necessario impostare le chiavi di privacy in Info.plist, per determinati diritti.

Utilizzare i diritti

Un'app .NET MAUI iOS deve essere configurata in Visual Studio per usare i diritti definiti nel file Entitlements.plist :

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto di app .NET MAUI e scegliere Proprietà. Passare quindi alla scheda Firma bundle iOS>.

  2. Nelle impostazioni di firma bundle fare clic sul pulsante Sfoglia per il campo Diritti personalizzati.

  3. Nella finestra di dialogo Diritti personalizzati passare alla cartella contenente il file Entitlements.plist, selezionare il file e fare clic sul pulsante Apri.

  4. Nelle proprietà del progetto il campo Diritti personalizzati verrà popolato con il file entitlement:

    Set di campi entitlement personalizzati di Visual Studio.

  5. Chiudere le proprietà del progetto.

Nota

Visual Studio imposta il campo entitlement personalizzati per le build di debug e versione.


Quando il provisioning automatico è abilitato, verrà aggiunto anche un subset di entitlement al profilo di provisioning dell'app come funzionalità. Per altre informazioni, vedere Aggiungere funzionalità con Visual Studio.

Informazioni di riferimento sulle chiavi

Le coppie chiave/valore entitlement sono elencate di seguito per riferimento. In Visual Studio possono essere aggiunti modificando il file Entitlements.plist come file XML. In Visual Studio Code possono essere aggiunti modificando il codice XML nel file Entitlements.plist .

Accedere alle informazioni wi-fi

Questo diritto alle informazioni wi-fi di accesso consente all'app di ottenere informazioni sulla rete Wi-Fi attualmente connessa.

Il diritto viene definito usando la com.apple.developer.networking.wifi-info chiave , di tipo Boolean:

<key>com.apple.developer.networking.wifi-info</key>
<true/>

Per altre informazioni, vedere Access WiFi Information Entitlement on developer.apple.com .For more information, see Access WiFi Information Entitlement on developer.apple.com.

Attestazione dell'app

Con l'attestazione dell'app entitlement, è possibile generare una chiave crittografica speciale nel dispositivo e usarla per convalidare l'integrità dell'app prima che un server fornisca l'accesso ai dati sensibili.

Il diritto viene definito usando la com.apple.developer.devicecheck.appattest-environment chiave , di tipo String:

<key>com.apple.developer.devicecheck.appattest-environment</key>
<string>development</string>

Per altre informazioni, vedere App Attesta Environment on developer.apple.com (Ambiente attestazione app in developer.apple.com).

Gruppi di app

Il diritto dei gruppi di app consente all'app di accedere ai contenitori di gruppi condivisi tra più app correlate e di eseguire la comunicazione tra processi tra le app.

Il diritto viene definito usando la com.apple.security.application-groups chiave , di tipo Array String:

<key>com.apple.security.application-groups</key>
<array>
  <string>group.MyAppGroups</string>
</array>

Per altre informazioni, vedere Diritti dei gruppi di app in developer.apple.com.

Apple Pay

Il diritto Apple Pay consente agli utenti di pagare in modo semplice e sicuro per buoni e servizi fisici, ad esempio generi alimentari, abbigliamento, biglietti e prenotazioni usando le informazioni di pagamento archiviate nel dispositivo.

Il diritto viene definito usando la com.apple.developer.in-app-payments chiave , di tipo Array String:

<key>com.apple.developer.in-app-payments</key>
<array>
  <string>merchant.your.merchantid</string>
</array>

Per altre informazioni, vedere Entitlement degli ID commercianti in developer.apple.com.

Domini associati

Il diritto ai domini associati consente all'app di essere associata a domini specifici per servizi specifici, ad esempio l'accesso a Safari, le password salvate e la continuazione dell'attività.

Il diritto viene definito usando la com.apple.developer.associated-domains chiave , di tipo Array String:

<key>com.apple.developer.associated-domains</key>
<array>
  <string>webcredentials:example.com</string>
</array>

Per altre informazioni, vedere Entitlement dei domini associati in developer.apple.com.

Provider di credenziali di riempimento automatico

Il diritto del provider di credenziali di riempimento automatico consente a un'app, con autorizzazione utente, di fornire nomi utente e password per il riempimento automatico nell'app e Safari.

Il diritto viene definito usando la com.apple.developer.authentication-services.autofill-credential-provider chiave , di tipo Boolean:

<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>

Per altre informazioni, vedere AutoFill Credential Provider Entitlement on developer.apple.com (Diritti del provider di credenziali di riempimento automatico in developer.apple.com).

ClassKit

Il diritto ClassKit consente all'app di condividere privatamente e in modo sicuro lo stato degli studenti con gli insegnanti in attività assegnate, ad esempio la lettura di un capitolo in un libro o l'esecuzione di un quiz, in ambienti gestiti dall'istituto di istruzione.

Il diritto viene definito usando la com.apple.developer.ClassKit-environment chiave , di tipo String:

<key>com.apple.developer.ClassKit-environment</key>
<string>development</string>

Per altre informazioni, vedere ClassKit Environment Entitlement on developer.apple.com .For more information, see ClassKit Environment Entitlement on developer.apple.com.

Comunica con i driver

Comunica con il diritto dei driver consente la comunicazione tra un'app e i driver DriverKit.

Il diritto viene definito usando la com.apple.developer.driverkit.communicates-with-drivers chiave , di tipo Boolean:

<key>com.apple.developer.driverkit.communicates-with-drivers</key>
<true/>

Per altre informazioni, vedere Comunicare con i driver in developer.apple.com.

Notifiche di comunicazione

Il diritto delle notifiche di comunicazione consente a un'app di inviare notifiche di comunicazione da una persona a una persona o a più persone.

Il diritto viene definito usando la com.apple.developer.usernotifications.communication chiave , di tipo Boolean:

<key>com.apple.developer.usernotifications.communication</key>
<true/>

Per altre informazioni, vedere Request Notification Service Entitlement on developer.apple.com .For more information, see Request Notification Service Entitlement on developer.apple.com.

Protezione dei dati

Il diritto di protezione dei dati consente all'app di usare la crittografia predefinita nei dispositivi supportati. Quando si specifica un file come protetto, il sistema archivierà il file in un formato crittografato.

Il diritto viene definito usando la com.apple.developer.default-data-protection chiave , di tipo String:

<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>

Per altre informazioni, vedere Diritto alla protezione dei dati in developer.apple.com.

Indirizzamento virtuale esteso

Il diritto di indirizzamento virtuale esteso consente di usare più spazio indirizzi nell'app.

Il diritto viene definito usando la com.apple.developer.kernel.extended-virtual-addressing chiave , di tipo Boolean:

<key>com.apple.developer.kernel.extended-virtual-addressing</key>
<true/>

Per altre informazioni, vedere Diritti di indirizzamento virtuale esteso su developer.apple.com.

Controlli famiglia

Il diritto ai controlli della famiglia abilita i controlli genitori nell'app, concedendole l'accesso ai framework Impostazioni gestite e Attività del dispositivo nell'API ScreenTime. L'uso dei controlli Famiglia richiede la condivisione della famiglia per l'iscrizione dell'utente. Impedisce la rimozione dell'app e abilita i filtri di contenuto sul dispositivo dalle estensioni di rete.

Il diritto viene definito usando la com.apple.developer.family-controls chiave , di tipo Boolean:

<key>com.apple.developer.family-controls</key>
<true/>

Per altre informazioni, vedere Diritto ai controlli della famiglia in developer.apple.com.

Modalità di test fileProvider

L'entitlement della modalità di test FileProvider abilita una modalità di test che fornisce maggiore controllo sull'estensione del provider di file sul comportamento del sistema durante i test.

Il diritto viene definito usando la com.apple.developer.fileprovider.testing-mode chiave , di tipo Boolean:

<key>com.apple.developer.fileprovider.testing-mode</key>
<true/>

Per altre informazioni, vedere Entitlement della modalità di test di FileProvider in developer.apple.com.

Tipi di carattere

Il diritto ai tipi di carattere consente all'app, con l'autorizzazione utente, di installare e usare tipi di carattere personalizzati.

Il diritto viene definito usando la com.apple.developer.user-fonts chiave , di tipo Array String:

<key>com.apple.developer.user-fonts</key>
<array>
  <string>system-installation</string>
</array>

Per altre informazioni, vedere Configurazione dei tipi di carattere personalizzati in developer.apple.com.

Raggruppare le attività

Il diritto alle attività di gruppo consente a un'app di comunicare con la stessa app in uno o più dispositivi, per creare un'attività di gruppo all'interno di una chiamata FaceTime. Le attività di gruppo su FaceTime consentono agli utenti di guardare il video insieme, ascoltare musica insieme o eseguire un'altra attività sincrona.

Il diritto viene definito usando la com.apple.developer.group-session chiave , di tipo Boolean:

<key>com.apple.developer.group-session</key>
<true/>

Per altre informazioni, vedere Diritto alle attività di gruppo su developer.apple.com.

HealthKit

Il diritto HealthKit consente all'app di accedere, con autorizzazione utente, informazioni sull'integrità personali.

Il diritto viene definito usando la com.apple.developer.healthkit chiave , di tipo Boolean:

<key>com.apple.developer.healthkit</key>
<true/>

Per altre informazioni, vedere HealthKit Entitlement in developer.apple.com.

HomeKit

Il diritto HomeKit consente all'app di interagire con gli accessori HomeKit.

Il diritto viene definito usando la com.apple.developer.homekit chiave , di tipo Boolean:

<key>com.apple.developer.homekit</key>
<true/>

Per altre informazioni, vedere HomeKit Entitlement in developer.apple.com.

Configurazione hotspot

Il diritto entitlement di configurazione hotspot consente all'app di configurare le reti Wi-Fi.

Il diritto viene definito usando la com.apple.developer.networking.HotspotConfiguration chiave , di tipo Boolean:

<key>com.apple.developer.networking.HotspotConfiguration</key>
<true/>

Per altre informazioni, vedere Hotspot Configuration Entitlement on developer.apple.com .For more information, see Hotspot Configuration Entitlement on developer.apple.com.

iCloud

Il diritto iCloud consente all'app di archiviare i dati nel cloud, consentendo agli utenti di condividere i dati tra più dispositivi.

Il diritto viene definito usando la com.apple.developer.icloud-container-development-container-identifiers chiave, di tipo Array Stringe quindi chiavi aggiuntive che rappresentano l'identificatore del contenitore:

<key>com.apple.developer.icloud-container-identifiers</key>
<array>
  <string>iCloud.com.companyname.test</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>

I $(AppIdentifierPrefix) segnaposto e $(CFBundleIdentifier) verranno sostituiti con i valori corretti in fase di compilazione.

Per altre informazioni, vedere Diritti degli identificatori dei contenitori iCloud in developer.apple.com.

Aumento del limite di memoria

L'aumento del diritto al limite di memoria consente all'app di superare il limite di memoria dell'app predefinito nei dispositivi supportati.

Il diritto viene definito usando la com.apple.developer.kernel.increased-memory-limit chiave , di tipo Boolean:

<key>com.apple.developer.kernel.increased-memory-limit</key>
<true/>

Per altre informazioni, vedere Aumento del diritto al limite di memoria per developer.apple.com.

Audio tra app

Il diritto audio tra app consente all'app di inviare e ricevere audio da e verso altre app con audio tra app abilitate.

Il diritto viene definito usando la inter-app-audio chiave , di tipo Boolean:

<key>inter-app-audio</key>
<true/>

Per altre informazioni, vedere Entitlement audio tra app su developer.apple.com.

Importante

Questo diritto è deprecato in iOS 13 e non è disponibile quando si eseguono app iPad in macOS.

Keychain

Il diritto Keychain consente a più app scritte dallo stesso team di condividere le password.

Il diritto viene definito usando la keychain-access-groups chiave , di tipo Array String:

<key>keychain-access-groups</key>
<array>
  <string>$(AppIdentifierPrefix)com.companyname.test</string>
</array>

Per altre informazioni, vedere Diritti dei gruppi di accesso Keychain in developer.apple.com.

Domini associati gestiti da MDM

Il diritto ai domini associati di Gestione sviluppo mobile (MDM) consente a MDM di integrare i domini associati inclusi nell'app con valori come i nomi dei server univoci per un ambiente.

Il diritto viene definito usando la com.apple.developer.associated-domains.mdm-managed chiave , di tipo Boolean:

<key>com.apple.developer.associated-domains.mdm-managed</key>
<true/>

A percorsi multipli

Il diritto Multipath consente all'app di usare protocolli multipath, ad esempio Multipath TCP, che consentirà di distribuire facilmente il traffico da un'interfaccia a un'altra.

Il diritto viene definito usando la com.apple.developer.networking.multipath chiave , di tipo Boolean:

<key>com.apple.developer.networking.multipath</key>
<true/>

Per altre informazioni, vedere Entitlement multipath su developer.apple.com.

Lettore tag di comunicazione nei campi vicini

L'entitlement del lettore tag di comunicazione near field consente a un'app di leggere tag NFC Near Field Communication (NFC).

Il diritto viene definito usando la com.apple.developer.nfc.readersession.formats chiave , di tipo Array String:

<key>com.apple.developer.nfc.readersession.formats</key>
<array>
  <string>NDEF</string>
  <string>TAG</string>
</array>

Per altre informazioni, vedere Diritti per i formati di sessione del lettore tag di comunicazione near field su developer.apple.com.

Estensioni di rete

L'entitlement delle estensioni di rete consente di creare estensioni dell'app che estendono e personalizzano le funzionalità di rete del dispositivo.

Il diritto viene definito usando la com.apple.developer.networking.networkextension chiave , di tipo Array String:

<key>com.apple.developer.networking.networkextension</key>
<array>
  <string>content-filter-provider</string>
</array>

Per altre informazioni, vedere Diritti delle estensioni di rete in developer.apple.com.

VPN personale

Il diritto VPN personale consente all'app di usare connessioni VPN personalizzate.

Il diritto viene definito usando la com.apple.developer.networking.vpn.api chiave , di tipo Array String:

<key>com.apple.developer.networking.vpn.api</key>
<array>
  <string>allow-vpn</string>
</array>

Per altre informazioni, vedere Diritto VPN personale su developer.apple.com.

Notifiche push

L'entitlement delle notifiche push consente all'app di ricevere notifiche push.

Il diritto viene definito usando la aps-environment chiave , di tipo String:

<key>aps-environment</key>
<string>development</string>

Per altre informazioni, vedere APS Environment Entitlement on developer.apple.com(Entitlement dell'ambiente APS in developer.apple.com).

Spingere a parlare

Il push per comunicare entitlement consente all'app di segnalare i canali Push to Talk al sistema in modo che possa gestire la trasmissione e la ricezione dell'audio in background.

Il diritto viene definito usando la com.apple.developer.push-to-talk chiave , di tipo Boolean:

<key>com.apple.developer.push-to-talk</key>
<true/>

Per altre informazioni, vedere Push to Talk Entitlement on developer.apple.com (Push to Talk Entitlement on developer.apple.com).

Condiviso con l'utente

Il diritto condiviso con l'utente consente a un'app di richiedere collegamenti condivisi nelle conversazioni di Messaggi e di visualizzarli tramite il framework Condiviso con l'utente.

Il diritto viene definito usando la com.apple.developer.shared-with-you chiave , di tipo Boolean:

<key>com.apple.developer.shared-with-you</key>
<true/>

Accedere con Apple

L'accesso con il diritto Apple consente agli utenti di eseguire l'autenticazione con l'ID Apple.

Il diritto viene definito usando la com.apple.developer.applesignin chiave , di tipo Array String:

<key>com.apple.developer.applesignin</key>
<array>
  <string>Default</string>
</array>

Per altre informazioni, vedere Sign in with Apple Entitlement on developer.apple.com (Accedi con Apple Entitlement on developer.apple.com).

Siri

Il diritto Siri consente all'app di gestire le richieste Siri.

Il diritto viene definito usando la com.apple.developer.siri chiave , di tipo Boolean:

<key>com.apple.developer.siri</key>
<true/>

Per altre informazioni, vedere Diritto siri su developer.apple.com.

Notifiche sensibili al tempo

L'entitlement per le notifiche sensibili al tempo consente a un'app di gestire notifiche sensibili al tempo. Le notifiche sensibili al tempo forniscono informazioni che richiedono attenzione immediata e chiama direttamente l'utente per intervenire al momento della ricezione della notifica. Gli avvisi sensibili al tempo vengono sempre recapitati immediatamente, vengono visualizzati sopra le altre notifiche e possono interrompere lo stato attivo e non disturbare.

Il diritto viene definito usando la com.apple.developer.usernotifications.time-sensitive chiave , di tipo Boolean:

<key>com.apple.developer.usernotifications.time-sensitive</key>
<true/>

Portafoglio

Il diritto al portafoglio consente all'app di gestire pass, biglietti, carte regalo e carte fedeltà. Supporta un'ampia gamma di formati di codice a barre.

Il diritto viene definito usando la com.apple.developer.pass-type-identifiers chiave , di tipo Array String:

<key>com.apple.developer.pass-type-identifiers</key>
<array>
  <string>$(TeamIdentifierPrefix)*</string>
</array>

Questo esempio consentirà all'app di consentire tutti i tipi di passaggio. Per limitare l'app e consentire solo un set di tipi di pass team, impostare il valore stringa su $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier) dove pass.$(CFBundleIdentifier) è l'ID pass.

Per altre informazioni, vedere Pass Type IDs Entitlement on developer.apple.com (Pass Type ID Entitlement on developer.apple.com).

WeatherKit

Il diritto WeatherKit consente a un'app di ricevere ed elaborare le informazioni meteo correnti e previste.

Il diritto viene definito usando la com.apple.developer.weatherkit chiave , di tipo Boolean:

<key>com.apple.developer.weatherkit</key>
<true/>

Per altre informazioni, vedere WeatherKit Entitlement su developer.apple.com.

Configurazione accessori wireless

Il diritto di configurazione accessori wireless consente all'app di configurare gli accessori Wi-Fi.

Il diritto viene definito usando la com.apple.external-accessory.wireless-configuration chiave , di tipo Boolean:

<key>com.apple.external-accessory.wireless-configuration</key>
<true/>

Per altre informazioni, vedere Diritti di configurazione accessori wireless su developer.apple.com.