Uso degli entitlement in Xamarin.iOS
Gli entitlement sono funzionalità speciali delle app e autorizzazioni di sicurezza concesse alle applicazioni configurate correttamente per il loro uso.
In iOS le app vengono eseguite in una sandbox, che fornisce un set di regole che limitano l'accesso tra l'applicazione e determinate risorse di sistema o dati utente. Gli entitlement vengono usati per richiedere al sistema di espandere la sandbox per fornire all'app funzionalità aggiuntive.
Per estendere le funzionalità dell'app, è necessario specificare un entitlement nel file Entitlements.plist dell'app. Possono essere estese solo determinate funzionalità, elencate nella guida Uso delle funzionalità e descritte sotto. Gli entitlement vengono passati al sistema come coppia di chiave/valore e in genere ne è necessario solo uno per ogni funzionalità. Le chiavi e i valori specifici sono descritti nella sezione Informazioni di riferimento sulle chiavi degli entitlement più avanti in questa guida. Visual Studio per Mac e Visual Studio offrono un'interfaccia chiara per l'aggiunta di entitlement in un'app Xamarin.iOS tramite l'editor Entitlements.plist. Questa guida illustra l'editor Entitlements.plist e come usarlo. Fornisce anche informazioni di riferimento su tutti gli entitlement che possono essere aggiunti a un progetto iOS per ogni funzionalità.
Entitlement e provisioning
Il file Entitlements.plist viene usato per specificare gli entitlement e per firmare il bundle dell'applicazione.
È tuttavia necessario un provisioning aggiuntivo per assicurarsi che il codice dell'app sia firmato correttamente. Il profilo di provisioning usato deve contenere un ID app con la funzionalità necessaria abilitata. Per informazioni su come procedere, vedere la guida Uso delle funzionalità.
Importante
Il file Entitlements.plist consente di inserire le proprietà corrette per un'applicazione usando le funzionalità, ma non riesce a generare un profilo di provisioning perché non è collegato a un account per sviluppatore Apple. Sarà tuttavia necessario generare un profilo di provisioning usando il portale per sviluppatori per distribuire l'applicazione.
Impostare gli entitlement in un progetto Xamarin.iOS
Durante la definizione dell'ID app, oltre a selezionare e configurare i servizi dell'applicazione richiesti, è anche necessario configurare gli entitlement nel progetto Xamarin.iOS modificando i file Info.plist e Entitlements.plist.
Per configurare gli entitlement in Visual Studio per Mac, seguire questa procedura:
Nel riquadro Della soluzione fare doppio clic sul file Info.plist per aprirlo.
Nella sezione Identità immettere un nome per l'applicazione e immettere l'identificatore bundle creato al momento della definizione dell'ID app:
Salvare le modifiche apportate al file Info.plist.
Nel riquadro Della soluzione fare doppio clic sul file Entitlements.plist per aprirlo per la modifica:
Selezionare e configurare gli entitlement richiesti per l'applicazione Xamarin.iOS in modo che corrispondano alla configurazione definita durante la creazione dell'ID app.
Salvare le modifiche apportate al file Entitlements.plist.
Aggiunta di un nuovo file Entitlements.plist
Gli entitlement vengono aggiunti a un'app tramite il file Entitlements.plist. Questo file è incluso nel progetto Xamarin.iOS per impostazione predefinita, ma potrebbe mancare nei progetti meno recenti.
Per aggiungere un file Entitlements.plist a Xamarin.iOS, seguire questa procedura:
Fare clic con il pulsante destro del mouse sul file di progetto e scegliere Aggiungi > nuovo file...:
Nella finestra di dialogo Nuovo file selezionare Elenco proprietà iOS > e denominarlo Entitlements:
Informazioni di riferimento sulle chiavi degli entitlement
Le chiavi degli entitlement possono essere aggiunte tramite il pannello Source (Origine) dell'editor Entitlements.plist. Le chiavi necessarie vengono in genere aggiunte quando si usa l'editor Entitlements.plist, ma sono elencate sotto come riferimento.
Portafoglio
Descrizione: conosciuta comunemente come Passbook, Wallet è un'app per l'archiviazione e la gestione dei pass. Questi pass possono essere carte di credito, carte cliente, carte d'imbarco o biglietti.
- Identificatore tipo di pass
- Chiavi: com.apple.developer.pass-type-identifiers
- Stringa:
$(TeamIdentifierPrefix)*
- Identificatore tipo di pass
Note:
- Permetterà all'app di consentire tutti i tipi di pass. Per limitare l'app e consentire solo un subset di tipi di pass per il team, impostare il valore della stringa su:
$(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)
Dove pass.$(CFBundleIdentifier) è l'ID del pass creato sopra
- Permetterà all'app di consentire tutti i tipi di pass. Per limitare l'app e consentire solo un subset di tipi di pass per il team, impostare il valore della stringa su:
iCloud
Descrizione: iCloud offre agli utenti iOS un modo semplice e pratico per archiviare contenuti e condividerli tra i dispositivi. Gli sviluppatori possono usare iCloud in quattro modi per offrire ai propri utenti un mezzo di archiviazione: archiviazione chiave-valore, archiviazione UIDocument, CoreData e uso diretto di CloudKit per l'archiviazione di singoli file e directory. Per altre informazioni su questi argomenti, vedere la guida introduttiva a iCloud.
- Documenti iCloud e CloudKit
- Chiavi: com.apple.developer.ubiquity-container-identifiers
- Stringa:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- Archiviazione chiave-valore iCloud
- Chiave: com.apple.developer.ubiquity-kvstore-identifier
- Stringa:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- Documenti iCloud e CloudKit
Note:
- La
$(TeamIdentifierPrefix)
stringa può essere individuata accedendo a developer.apple.com e visitando il Riepilogo account sviluppatore del Centro >> membri per ottenere l'ID team (o ID singolo per singoli sviluppatori). Sarà una stringa di 10 caratteri (ad esempio, A93A5CM278). - La stringa
$(CFBundleIdentifier)
inizia coniCloud
e viene impostata quando il contenitore iCloud viene creato seguendo i passaggi della guida Uso delle funzionalità. - Si possono usare i segnaposto $
(TeamIdentifierPrefix)
e$(CFBundleIdentifier)
che verranno sostituiti con i valori corretti in fase di compilazione.
- La
Importante
Apple fornisce strumenti per aiutare gli sviluppatori a gestire correttamente il Regolamento generale sulla protezione dei dati (GDPR) dell'Unione Europea.
Gruppi di app
Descrizione: un gruppo di app consente a diverse applicazioni o a un'applicazione e alle relative estensioni di accedere a un percorso di archiviazione file condiviso.
- Chiave: com.apple.security.application-groups
- Stringa: group.$(CFBundleIdentifier)
Apple Pay
- Descrizione: Apple Pay consente agli utenti di pagare beni tramite il dispositivo iOS.
- Chiave: com.apple.developer.in-app-payments
- Stringa: merchant.your.mechantid
Notifiche push
- Chiave: aps-environment
- Stringa:
development
oppureproduction
Siri
- Descrizione: SiriKit consente a un'app iOS di fornire servizi accessibili a Siri e all'app Mappe su un dispositivo iOS usando le estensioni app e i nuovi framework Intent e Interfaccia utente Intent. Per altre informazioni, vedere la guida introduttiva a SiriKit.
- Chiave: com.apple.developer.siri
VPN personale
- Chiave: com.apple.developer.networking.vpn.api
- Stringa: allow-vpn
Condivisione del keychain
- Descrizione: la condivisione del keychain consente agli sviluppatori di app di condividere le password archiviate nel keychain di un dispositivo con le altre app sviluppate dallo stesso team. L'accesso può essere limitato passando un identificatore di gruppo di accesso keychain nella stringa.
- Chiave: keychain-access-groups
- Stringa: $(AppIdentifierPrefix) $(CFBundleIdentifier)
Audio Inter-App
- Descrizione: Audio Inter-App consente agli sviluppatori di trasmettere l'audio tra le app.
- Chiave: inter-app-audio
- Valore booleano: YES
Domini associati
- Descrizione: i domini associati che devono essere gestiti come collegamenti universali devono essere passati con questo entitlement. I collegamenti universali possono essere implementati per consentire il deep linking tra l'app e il sito Web. È consigliabile specificare una voce per ogni dominio supportato dall'app e ogni voce deve iniziare con
applinks:
- Chiave: com.apple.developer.associated-domains
- Stringa: webcredentials:example.com
Protezione dei dati
- Descrizione: l'abilitazione della protezione dati usa l'hardware di crittografia predefinito per archiviare i dati sensibili usati nell'app in un formato crittografato. Per impostazione predefinita, il livello di protezione viene impostato sulla protezione completa, in cui i file sono accessibili solo quando il dispositivo è sbloccato.
- Chiave: com.apple.developer.default-data-protection
- Stringa: NSFileProtectionComplete
HomeKit
- Descrizione: il framework HomeKit fornisce una piattaforma per l'impostazione, la configurazione e la gestione dei dispositivi di domotica supportati da un solo dispositivo iOS. Per altre informazioni sull'uso di HomeKit, vedere la guida introduttiva a HomeKit.
- Chiave: com.apple.developer.homekit
- Valore booleano: YES
HealthKit
- Descrizione: HealthKit è un framework introdotto in iOS 8 che fornisce un archivio dati centralizzato, coordinato e sicuro per le informazioni relative alla salute. Per altre informazioni sull'uso di HealthKit, vedere la guida introduttiva a HealthKit.
- Chiave: com.apple.developer.healthkit
- Valore booleano: YES
Configurazione accessori wireless
- Descrizione: l'uso della configurazione accessori wireless consente all'app di configurare gli accessori Wi-Fi MFi
- Chiave: com.apple.external-accessory.wireless-configuration
- Valore booleano: YES
ClassKit
- Descrizione: ClassKit consente ai docenti di visualizzare l'avanzamento degli studenti nelle attività assegnate nell'app.
- Key: com.apple.developer.ClassKit-environment
- Stringa:
development
oppureproduction
Riepilogo
Questa guida ha illustrato gli entitlement e come usarli in Visual Studio per Mac e in Visual Studio. Ha anche fornito informazioni di riferimento sulle coppie chiave/valore per ogni funzionalità.