Intune App SDK per iOS - Funzionalità di partecipazione alle app

Microsoft Intune App SDK per iOS consente di incorporare i criteri di protezione delle app di Intune (noti anche come criteri APP o MAM) nell'app iOS nativa. Un'applicazione gestita da Intune è integrata con Intune App SDK. Gli amministratori di Intune possono distribuire facilmente i criteri di protezione delle app nell'app gestita da Intune quando Intune gestisce attivamente l'app.

Nota

Questa guida è suddivisa in diverse fasi distinte. Per iniziare, vedere Pianificare l'integrazione.

Fase 4: Funzionalità di partecipazione alle app

Obiettivi di fase

  • Informazioni sulle varie funzionalità di partecipazione alle app offerte da Intune App SDK.
  • Integrare le funzionalità di partecipazione alle app rilevanti per l'app e gli utenti.
  • Testare l'integrazione di tali funzionalità.

Che cosa sono le "funzionalità di partecipazione alle app"?

Questo processo di integrazione dell'SDK tenta di ridurre al minimo la quantità di codice specifico dell'app che gli sviluppatori devono scrivere. Completando correttamente le fasi precedenti dell'integrazione dell'SDK, l'app può ora applicare la maggior parte delle impostazioni dei criteri di protezione delle app, ad esempio la crittografia dei file, le restrizioni di copia/incolla, il blocco degli screenshot e le restrizioni per il trasferimento dei dati.

Esistono tuttavia alcune impostazioni che richiedono codice specifico dell'app per essere applicato correttamente; queste sono chiamate funzionalità di partecipazione alle app. In genere, l'SDK non ha un contesto sufficiente per il codice dell'applicazione o lo scenario dell'utente finale per applicare automaticamente queste impostazioni e quindi si basa sugli sviluppatori per chiamare le API SDK in modo appropriato.

Le funzionalità di partecipazione alle app non sono necessariamente facoltative. A seconda delle funzionalità esistenti dell'app, queste funzionalità potrebbero essere necessarie.

Le fasi successive di questa guida descrivono diverse importanti funzionalità di partecipazione alle app:

Il resto di questa guida descrive il set rimanente di funzionalità di partecipazione alle app:

  • Implementare gli account consentiti
  • Implementare la crittografia file necessaria
  • Implementare controlli di salvataggio con nome e apertura da
  • Condividere dati tramite UIActivityViewController
  • Abilitare la configurazione di destinazione (configurazione dell'app APP/MAM) per le applicazioni iOS
  • Telemetria
  • Intenti di Siri
  • Clip dell'app
  • Stampa
  • Notifiche
  • Post-compilazione script

Personalizzare il comportamento dell'app con le API

Intune App SDK include diverse API che è possibile chiamare per ottenere informazioni sui criteri app di Intune distribuiti nell'app. Puoi usare questi dati per personalizzare il comportamento dell'app. Nella tabella seguente vengono fornite informazioni su alcune classi di Intune essenziali usate.

Classe Descrizione
IntuneMAMPolicyManager.h La classe IntuneMAMPolicyManager espone i criteri APP di Intune distribuiti all'applicazione. In particolare, espone le API utili per l'abilitazione di più identità.
IntuneMAMPolicy.h La classe IntuneMAMPolicy espone alcune impostazioni dei criteri MAM applicabili all'app. La maggior parte di queste impostazioni dei criteri viene esposta in modo che l'app possa personalizzarne l'interfaccia utente. La maggior parte delle impostazioni dei criteri viene applicata dall'SDK e non dall'app. Tuttavia, esistono alcune eccezioni. Gli sviluppatori di app devono esaminare i commenti in questa intestazione per determinare quali API sono applicabili agli scenari dell'applicazione.
IntuneMAMFileProtectionManager.h La classe IntuneMAMFileProtectionManager espone le API che l'app può usare per proteggere in modo esplicito file e directory in base a un'identità fornita. L'identità può essere gestita da Intune o non gestita e l'SDK applicherà i criteri MAM appropriati. L'uso di questa classe è facoltativo.
IntuneMAMDataProtectionManager.h La classe IntuneMAMDataProtectionManager espone le API che l'app può usare per proteggere i buffer di dati in base a un'identità fornita. L'identità può essere gestita da Intune o non gestita e l'SDK applicherà la crittografia in modo appropriato.

Implementare gli account consentiti

Intune consente agli amministratori IT di specificare gli account a cui l'utente può accedere. Le app possono eseguire query su Intune App SDK per l'elenco specificato di account consentiti e quindi assicurarsi che solo gli account consentiti siano connessi al dispositivo.

Per eseguire una query per gli account consentiti, l'app deve controllare la allowedAccounts proprietà in IntuneMAMEnrollmentManager. La allowedAccounts proprietà è una matrice contenente gli account consentiti o nil. Se la proprietà è nil, non sono stati specificati account consentiti. Le applicazioni abilitate per MSAL/OneAuth devono usare la allowedAccountIds proprietà nell'istanza per eseguire query sull'ID IntuneMAMEnrollmentManager oggetto Entra.

Le app possono anche reagire alle modifiche della allowedAccounts proprietà osservando la IntuneMAMAllowedAccountsDidChangeNotification notifica. La notifica viene pubblicata ogni volta che la allowedAccounts proprietà cambia valore.

Quando si usano le API per gli account consentiti, sono necessari i requisiti seguenti:

  • Il confronto tra identità deve non fare distinzione tra maiuscole e minuscole per UPN e OID.
  • Il confronto delle identità deve supportare sia UPN che OID.
  • L'applicazione deve avere la registrazione per diagnosticare eventuali mancata corrispondenza tra l'account specificato dall'amministratore e l'account immesso dall'utente.

Implementare la crittografia file necessaria

L'API isFileEncryptionRequired definita in IntuneMAMPolicy.h informa le applicazioni quando l'amministratore IT richiede che le applicazioni usno la crittografia di Intune su tutti i file salvati su disco. Se isFileEncryptionRequired è true, è responsabilità dell'app assicurarsi che tutti i file salvati su disco dall'app vengano crittografati usando le API in IntuneMAMFile.h, IntuneMAMFileProtectionManager.he IntuneMAMFDataProtectionManager.h.

Le app possono reagire alle modifiche apportate a questo criterio osservando la IntuneMAMDataProtectionDidChangeNotification notifica definita in IntuneMAMFDataProtectionManager.h.

Implementare controlli di salvataggio con nome e apertura da

Intune consente agli amministratori IT di selezionare i percorsi di archiviazione da cui un'app gestita può salvare o aprire i dati. Le app possono eseguire query su MAM SDK di Intune per ottenere percorsi di archiviazione di salvataggio consentiti usando l'API isSaveToAllowedForLocation:withAccountId: , definita in IntuneMAMPolicy.h. Le app possono anche eseguire query sull'SDK per individuare i percorsi di archiviazione aperti consentiti usando l'API isOpenFromAllowedForLocation:withAccountId: , definita anche in IntuneMAMPolicy.h.

Inoltre, le app possono verificare che i dati in ingresso da un'estensione di condivisione siano consentiti eseguendo una query sull'API canReceiveSharedItemProvider: , definita in IntuneMAMPolicy.h. Le app possono anche eseguire query sull'API canReceiveSharedFile: per verificare i file in ingresso da una chiamata openURL, definita anche in IntuneMAMPolicy.h

Nota

Sono state apportate modifiche al comportamento interno a partire da MAM SDK v15.1.0.

  • Un nil account non verrà più considerato come l'account corrente per i percorsi LocalDrive/LocalStorage. Il passaggio di un nil account verrà considerato come un account non gestito. Poiché le app possono controllare il modo in cui gestiscono l'archiviazione sandbox, un'identità può e deve essere associata a tali posizioni.
  • Un nil account non verrà più considerato come l'account corrente per le app con identità singola. Il passaggio di un nil account in un'app a identità singola verrà ora trattato esattamente come se fosse stato passato in un'app multi-identità. Se si sviluppa un'app a identità singola, usare il IntuneMAMPolicyprimaryUser per fare riferimento all'account corrente se gestito e nil per fare riferimento all'account corrente se non gestito.

Gestione degli scenari di salvataggio

Prima di spostare i dati in una nuova posizione locale o di archiviazione cloud, un'app deve verificare con l'API isSaveToAllowedForLocation:withAccountId: se l'amministratore IT ha consentito il trasferimento dei dati. Questo metodo viene chiamato su un IntuneMAMPolicy oggetto . I dati da modificare e salvare sul posto non devono essere controllati con questa API.

Nota

L'oggetto IntuneMAMPolicy deve rappresentare i criteri del proprietario dei dati salvati. Per ottenere l'oggetto di un'identità IntuneMAMPolicy specifica, chiamare IntuneMAMPolicyManageril metodo di policyForAccountId: . Se il proprietario è un account non gestito senza identità, nil può essere passato a policyForAccountId:. Anche se i dati salvati non sono dati dell'organizzazione, isSaveToAllowedForLocation:withAccountId: devono comunque essere chiamati. L'account proprietario del percorso di destinazione potrebbe avere ancora criteri che limitano i dati non gestiti in ingresso.

Il isSaveToAllowedForLocation:withAccountId: metodo accetta due argomenti. Il primo argomento è un valore di enumerazione del tipo IntuneMAMSaveLocation definito in IntuneMAMPolicy.h. Il secondo argomento è l'UPN dell'identità proprietaria della posizione. Se il proprietario non è noto, nil è possibile usare invece .

Percorsi di salvataggio supportati

Intune MAM SDK offre il supporto per i percorsi di salvataggio seguenti definiti in IntuneMAMPolicy.h:

  • IntuneMAMSaveLocationOneDriveForBusiness - Questa posizione rappresenta le posizioni di OneDrive for Business. L'identità associata all'account di OneDrive deve essere passata come secondo argomento.
  • IntuneMAMSaveLocationSharePoint - Questo percorso rappresenta sia SharePoint online che Microsoft Entra Hybrid Modern Auth SharePoint in locale. L'identità associata all'account di SharePoint deve essere passata come secondo argomento.
  • IntuneMAMSaveLocationLocalDrive - Questa posizione rappresenta l'archiviazione app-sandbox a cui è possibile accedere solo dall'app. Questo percorso non deve essere usato per il salvataggio tramite una selezione file o per il salvataggio nei file tramite un'estensione di condivisione. Se un'identità può essere associata all'archiviazione app-sandbox, deve essere passata come secondo argomento. Se non è presente alcuna identità, nil è consigliabile passarlo. Ad esempio, un'app potrebbe usare contenitori di archiviazione app-sandbox separati per account diversi. In questo caso, l'account proprietario del contenitore a cui si accede deve essere usato come secondo argomento.
  • IntuneMAMSaveLocationCameraRoll - Questa posizione rappresenta la raccolta foto iOS. Poiché non è associato alcun account alla raccolta foto di iOS, deve essere passato solo nil come secondo argomento quando viene usato questo percorso.
  • IntuneMAMSaveLocationAccountDocument - Questa posizione rappresenta qualsiasi posizione dell'organizzazione non elencata in precedenza che può essere associata a un account gestito. L'account dell'organizzazione associato alla posizione deve essere passato come secondo argomento. Ad esempio, il caricamento di una foto nel servizio cloud LOB di un'organizzazione associato all'account dell'organizzazione.
  • IntuneMAMSaveLocationOther - Questo percorso rappresenta qualsiasi posizione non organizzata, non elencata in precedenza o una posizione sconosciuta. Se un account è associato alla posizione, deve essere passato come secondo argomento. In caso contrario, nil deve essere usato.
Considerazioni speciali per i percorsi di salvataggio

La IntuneMAMSaveLocationLocalDrive posizione deve essere usata solo per l'archiviazione app-sandbox accessibile solo dall'app. Per verificare se un file può essere salvato nell'archiviazione dei dispositivi iOS tramite una selezione file o un altro metodo in cui i dati saranno accessibili nell'app File, IntuneMAMSaveLocationOther deve essere usato.

Se il percorso di destinazione non è elencato, IntuneMAMSaveLocationAccountDocument o IntuneMAMSaveLocationOther deve essere usato. Se la posizione contiene dati dell'organizzazione a cui si accede usando l'account gestito (ad esempio. È necessario usare il servizio cloud LOB per l'archiviazione dei dati IntuneMAMSaveLocationAccountDocument dell'organizzazione. Se la posizione non contiene dati dell'organizzazione, è necessario usare la IntuneMAMSaveLocationOther posizione.

Gestione di scenari open from

Prima di importare dati da una nuova posizione locale o di archiviazione cloud, un'app deve verificare con l'API isOpenFromAllowedForLocation:withAccountId: se l'amministratore IT ha consentito il trasferimento dei dati. Questo metodo viene chiamato su un IntuneMAMPolicy oggetto . Non è necessario controllare i dati aperti sul posto con questa API.

Nota

L'oggetto IntuneMAMPolicy deve rappresentare i criteri dell'identità che riceve i dati. Per ottenere l'oggetto di un'identità IntuneMAMPolicy specifica, chiamare IntuneMAMPolicyManageril metodo di policyForAccountId: . Se l'account ricevente è un account non gestito senza identità, nil può essere passato a policyForAccountId:. Anche se i dati ricevuti non sono dati dell'organizzazione, isOpenFromAllowedForLocation:withAccountId: devono comunque essere chiamati. L'account proprietario dei dati potrebbe avere ancora criteri che limitano le destinazioni dei trasferimenti di dati in uscita.

Il isOpenFromAllowedForLocation:withAccountId: metodo accetta due argomenti. Il primo argomento è un valore di enumerazione del tipo IntuneMAMOpenLocation definito in IntuneMAMPolicy.h. Il secondo argomento è l'UPN dell'identità proprietaria della posizione. Se il proprietario non è noto, nil è possibile usare invece .

Percorsi aperti supportati

Intune MAM SDK offre il supporto per le posizioni aperte seguenti definite in IntuneMAMPolicy.h:

  • IntuneMAMOpenLocationOneDriveForBusiness - Questa posizione rappresenta le posizioni di OneDrive for Business. L'identità associata all'account di OneDrive deve essere passata come secondo argomento.
  • IntuneMAMOpenLocationSharePoint - Questo percorso rappresenta sia SharePoint online che Microsoft Entra Hybrid Modern Auth SharePoint in locale. L'identità associata all'account di SharePoint deve essere passata come secondo argomento.
  • IntuneMAMOpenLocationCamera - Questa posizione rappresenta solo le nuove immagini scattate dalla fotocamera. Poiché non è presente alcun account associato alla fotocamera iOS, deve essere passato solo nil come secondo argomento quando viene usata questa posizione. Per aprire i dati dalla raccolta foto di iOS, usare IntuneMAMOpenLocationPhotos.
  • IntuneMAMOpenLocationPhotos - Questa posizione rappresenta solo le immagini esistenti all'interno della raccolta foto iOS. Poiché non è associato alcun account alla raccolta foto di iOS, deve essere passato solo nil come secondo argomento quando viene usato questo percorso. Per aprire le immagini scattate direttamente dalla fotocamera iOS, usare IntuneMAMOpenLocationCamera.
  • IntuneMAMOpenLocationLocalStorage - Questa posizione rappresenta l'archiviazione app-sandbox a cui è possibile accedere solo dall'app. Questo percorso non deve essere usato per aprire file da una selezione file o per gestire i file in ingresso da un openURL. Se un'identità può essere associata all'archiviazione app-sandbox, deve essere passata come secondo argomento. Se non è presente alcuna identità, nil è consigliabile passarlo. Ad esempio, un'app potrebbe usare contenitori di archiviazione app-sandbox separati per account diversi. In questo caso, l'account proprietario del contenitore a cui si accede deve essere usato come secondo argomento.
  • IntuneMAMOpenLocationAccountDocument - Questa posizione rappresenta qualsiasi posizione dell'organizzazione non elencata in precedenza che può essere associata a un account gestito. L'account dell'organizzazione associato alla posizione deve essere passato come secondo argomento. Ad esempio, il download di una foto dal servizio cloud LOB di un'organizzazione associato all'account dell'organizzazione.
  • IntuneMAMOpenLocationOther - Questa posizione rappresenta qualsiasi posizione non organizzata, non elencata in precedenza, o qualsiasi posizione sconosciuta. Se un account è associato alla posizione, deve essere passato come secondo argomento. In caso contrario, nil deve essere usato.
Considerazioni speciali per le posizioni aperte

La IntuneMAMOpenLocationLocalStorage posizione deve essere usata solo per l'archiviazione app-sandbox a cui l'app può accedere. Per verificare se un file può essere aperto dall'archiviazione dei dispositivi iOS tramite una selezione file o un altro metodo in cui i dati sono accessibili anche nell'app File, IntuneMAMOpenLocationOther deve essere usato.

Se il percorso di destinazione non è elencato, IntuneMAMOpenLocationAccountDocument o IntuneMAMOpenLocationOther deve essere usato. Se la posizione contiene dati dell'organizzazione a cui si accede usando l'account gestito. Ad esempio, è necessario usare il servizio cloud LOB per l'archiviazione dei dati IntuneMAMOpenLocationAccountDocument dell'organizzazione. Se la posizione non contiene dati dell'organizzazione, è necessario usare la IntuneMAMSaveLocationOther posizione.

Gestione di NSItemProvider e file in ingresso

Per la gestione di NSItemProvider ricevuti da un'estensione di condivisione, è possibile usare il IntuneMAMPolicymetodo di canReceiveSharedItemProvider: anziché isOpenFromAllowedForLocation:withAccountId:. Il canReceiveSharedItemProvider: metodo accetta un oggetto NSItemProvider e restituisce un valore che indica se l'amministratore IT può aprirlo nell'account IntuneMAMPolicy dell'oggetto. L'elemento deve essere caricato prima di chiamare questo metodo. Ad esempio, chiamando loadItemForTypeIdentifier:options:completionHandler. Questo metodo può anche essere chiamato dal gestore di completamento passato alla chiamata di caricamento NSItemProvider.

Per la gestione dei file in ingresso, è possibile usare il IntuneMAMPolicymetodo di canReceiveSharedFile: anziché isOpenFromAllowedForLocation:withAccountId:. Il canReceiveSharedFile: metodo accetta un percorso NSString e restituisce se è consentito dall'amministratore IT di essere aperto nell'account IntuneMAMPolicy dell'oggetto.

Avviso di condivisione bloccato

Una funzione helper dell'interfaccia utente può essere usata quando viene chiamata l'API isSaveToAllowedForLocation:withAccountId: o isOpenFromAllowedForLocation:withAccountId: e viene trovata per bloccare l'azione di salvataggio/apertura. Se l'app vuole notificare all'utente che l'azione è stata bloccata, può chiamare l'API showSharingBlockedMessage definita in IntuneMAMUIHelper.h per presentare una visualizzazione avviso con un messaggio generico.

Condividere dati tramite UIActivityViewController

A partire dalla versione 8.0.2, Intune App SDK può filtrare UIActivityViewController le azioni in modo che siano disponibili solo le posizioni di condivisione gestita di Intune. Questo comportamento verrà controllato dai criteri di trasferimento dei dati dell'applicazione.

Azioni 'Copia in'

Quando si condividono documenti tramite UIActivityViewController e UIDocumentInteractionController, iOS visualizza le azioni "Copia in" per ogni applicazione che supporta l'apertura del documento condiviso. Le applicazioni dichiarano i tipi di documento supportato tramite l'impostazione CFBundleDocumentTypes nel file Info.plist. Questo tipo di condivisione non sarà più disponibile se il criterio impedisce la condivisione ad applicazioni non gestite. In sostituzione, l'utente dovrà aggiungere un'estensione azione non dell'interfaccia utente all'applicazione e collegarla a Intune App SDK. L'estensione Action è semplicemente uno stub. L'SDK implementerà il comportamento di condivisione file. Seguire la procedura seguente:

  1. L'applicazione deve avere almeno uno schemaURL definito in Info.plist CFBundleURLTypes insieme alla relativa -intunemam controparte. Ad esempio:

    <key>CFBundleURLSchemes</key>
     <array>
     	<string>launch-com.contoso.myapp</string>
     	<string>launch-com.contoso.myapp-intunemam</string>
     </array>
    
  2. Sia l'applicazione che l'estensione azione devono condividere almeno un gruppo di app e il gruppo di app deve essere elencato nella AppGroupIdentifiers matrice sotto i dizionari IntuneMAMSettings dell'app e dell'estensione.

  3. Sia l'applicazione che l'estensione azione devono avere la funzionalità Condivisione portachiava e condividere il com.microsoft.intune.mam gruppo keychain.

  4. Assegnare all'estensione dell'azione il nome "Apri in" seguito dal nome dell'applicazione. Localizzare Info.plist in base alle esigenze.

  5. Specificare un'icona del modello per l'estensione, come descritto nella documentazione per sviluppatori di Apple. In alternativa, è possibile usare lo strumento IntuneMAMConfigurator per generare queste immagini dalla directory .app dell'applicazione. A tale scopo, eseguire:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. In IntuneMAMSettings nel file Info.plist dell'estensione aggiungere un'impostazione booleana denominata OpenInActionExtension con il valore YES.

  7. Configurare per NSExtensionActivationRule supportare un singolo file e tutti i tipi dal prefisso dell'applicazione CFBundleDocumentTypes con com.microsoft.intune.mamil prefisso . Ad esempio, se l'applicazione supporta public.text e public.image, la regola di attivazione sarà:

    SUBQUERY (
        extensionItems,
        $extensionItem,
        SUBQUERY (
            $extensionItem.attachments,
            $attachment,
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.text" ||
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image").@count == 1
    ).@count == 1
    

Aggiornare le estensioni share e action esistenti

Se l'app contiene già estensioni Share o Action, NSExtensionActivationRule sarà necessario modificarle per consentire i tipi di Intune. Per ogni tipo supportato dall'estensione, aggiungere un tipo aggiuntivo preceduto com.microsoft.intune.mamda . Ad esempio, se la regola di attivazione esistente è:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
    ).@count > 0
).@count > 0

Deve essere modificato in questo modo:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.url" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.plain-text" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image" ||
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.data"
    ).@count > 0
).@count > 0

Nota

Lo strumento IntuneMAMConfigurator può essere usato per aggiungere i tipi di Intune alla regola di attivazione. Se la regola di attivazione esistente usa le costanti stringa predefinite. Ad esempio, NSExtensionActivationSupportsFileWithMaxCount, NSExtensionActivationSupportsText e così via, la sintassi del predicato può diventare piuttosto complessa. Lo strumento IntuneMAMConfigurator può essere usato anche per convertire la regola di attivazione dalle costanti stringa in una stringa di predicato durante l'aggiunta dei tipi di Intune.

Aspetto dell'interfaccia utente

Interfaccia utente precedente:

Condivisione dei dati - Interfaccia utente di condivisione precedente di iOS

Nuova interfaccia utente:

Condivisione dei dati - Nuova interfaccia utente di condivisione di iOS

Abilitare la configurazione di app di destinazione per le applicazioni iOS

La configurazione di destinazione MAM (nota anche come configurazione dell'app MAM) consente a un'app di ricevere i dati di configurazione tramite Intune SDK. Il formato e le varianti di questi dati devono essere definiti e comunicati ai clienti di Intune dal proprietario/sviluppatore dell'app.

Gli amministratori di Intune possono indirizzare e distribuire i dati di configurazione tramite l'interfaccia di amministrazione di Microsoft Intune e l'API Graph di Intune. A partire dalla versione 7.0.1 di Intune App SDK per iOS, le app che partecipano alla configurazione di destinazione MAM possono fornire dati di configurazione di destinazione MAM tramite il servizio MAM. I dati di configurazione dell'applicazione vengono sottoposti a push tramite il servizio MAM direttamente nell'app anziché tramite il canale MDM. Intune App SDK fornisce una classe per accedere ai dati recuperati da queste console. Gli elementi seguenti sono prerequisiti:

  • L'app deve essere registrata con il servizio MAM di Intune prima di accedere all'interfaccia utente di configurazione di destinazione MAM. Per altre informazioni, vedere Ricevere i criteri di protezione delle app.

  • Includere IntuneMAMAppConfigManager.h nel file di origine dell'app.

  • Chiamare [[IntuneMAMAppConfigManager instance] appConfigForAccountId:] per ottenere l'oggetto di configurazione dell'app.

  • Chiamare il selettore appropriato nell'oggetto IntuneMAMAppConfig . Ad esempio, se la chiave dell'applicazione è una stringa, è consigliabile usare stringValueForKey o allStringsForKey. Vedere IntuneMAMAppConfig.h per una descrizione dettagliata dei valori restituiti e delle condizioni di errore.

Per altre informazioni sulle funzionalità dell'API Graph, vedere Informazioni di riferimento sull'API Graph.

Per altre informazioni su come creare criteri di configurazione delle app di destinazione MAM in iOS, vedere la sezione relativa alla configurazione di app di destinazione MAM in Come usare i criteri di configurazione delle app di Microsoft Intune per iOS/iPadOS.

Telemetria

Per impostazione predefinita, Intune App SDK per iOS raccoglie i dati di telemetria sui tipi di eventi seguenti:

  • Avvio dell'app: per consentire a Microsoft Intune di ottenere informazioni sull'utilizzo delle app abilitate per MAM in base al tipo di gestione (MAM con MDM, MAM senza registrazione MDM e così via).

  • Chiamate di registrazione: per consentire a Microsoft Intune di conoscere la percentuale di esito positivo e altre metriche delle prestazioni delle chiamate di registrazione avviate dal lato client.

  • Azioni di Intune: per diagnosticare i problemi e garantire la funzionalità di Intune, vengono raccolte informazioni sulle azioni di Intune SDK.

Nota

Se si sceglie di non inviare i dati di telemetria di Intune App SDK a Microsoft Intune dall'applicazione per dispositivi mobili, è necessario disabilitare l'acquisizione dei dati di telemetria di Intune App SDK. Impostare la proprietà MAMTelemetryDisabled su YES nel dizionario IntuneMAMSettings.

Intenti di Siri

Se l'app si integra con Siri Intents o effettua donazioni di finalità Siri, assicurati di leggere i commenti per in IntuneMAMPolicy.h per areSiriIntentsAllowed istruzioni sul supporto di questo scenario.

Nota

In iOS 16 e versioni successive è disponibile un nuovo framework di sistema App Intents per la creazione di finalità dell'app Swift. Le app che implementano una finalità dell'app devono innanzitutto controllare la areSiriIntentsAllowed proprietà nell'oggetto IntuneMAMPolicy per l'utente.

Clip dell'app

Se l'app include una destinazione di clip dell'app, assicurati di verificare che non siano presenti dati gestiti nel clip dell'app. Il clip dell'app deve essere considerato una posizione non gestita. L'integrazione dell'SDK in Clip app non è attualmente supportata.

Stampa

Se l'app implementa la stampa e fornisce un'azione di stampa personalizzata in un menu personalizzato, assicurarsi di usare UIPrintInteractionController.isPrintingAvailable() per determinare se è necessario aggiungere l'azione di stampa al menu personalizzato.

Notifiche

Se l'app riceve notifiche, assicurarsi di leggere i commenti per in IntuneMAMPolicy.h per notificationPolicy istruzioni sul supporto di questo scenario. È consigliabile che le app si registrino per IntuneMAMPolicyDidChangeNotification descritte in IntuneMAMPolicyManager.he comunichino questo valore tramite UNNotificationServiceExtension il keychain.

Estensioni Web safari

Se l'app ha un'estensione Web Safari e supporta l'invio di dati tra l'estensione e l'applicazione padre, in alcuni scenari l'applicazione potrebbe dover supportare il blocco dei dati. Per bloccare i dati, nell'applicazione padre chiamare l'API isAppSharingAllowed in IntuneMAMPolicy.he quindi bloccare l'estensione Web.

Post-compilazione script

Lo strumento da riga di comando IntuneMAMFrameworkPatcher non deve più essere eseguito come ultimo passaggio del processo di compilazione dell'applicazione. Tuttavia, questo strumento è disponibile come parte di Intune App SDK per iOS in GitHub.

Importante

A partire dalla versione 17.7.1 di Intune MAM SDK, questo passaggio non è più necessario. Lo strumento da riga di comando IntuneMAMFrameworkPatcher non deve più essere eseguito.

Utilizzo della riga di comando

IntuneMAMFrameworkPatcher -i /path/to/directory_or_binary [-resign] [-verbose]

Parametri:

  • i, , rv: questo parametro consente di scegliere di installare, rimuovere o verificare il patcher MAM Framework di Intune per il processo di compilazione dell'applicazione.
  • path path: deve essere la radice della directory .app dell'applicazione.
  • resign: l'opzione resign indica allo strumento di dimettere i file binari che avevano una firma valida prima di applicare patch al file binario. Questa opzione deve essere usata se il progetto include dipendenze del framework o plug-in con l'opzione Incorpora e firma , anche quando viene eseguito prima della firma finale dell'applicazione o se lo strumento viene eseguito dopo la firma finale dell'applicazione.
  • verbose: l'opzione verbose farà sì che lo strumento restituisca informazioni su ogni file binario a cui è stata applicata una patch.

Altri utilizzi:

  • Rimuovere la patch:

    IntuneMAMFrameworkPatcher -r /path/to/directory_or_binary [-resign] [-verbose]

  • Verificare la patch:

    IntuneMAMFrameworkPatcher -v /path/to/directory_or_binary [-verbose]

Script di esempio:

IntuneMAMFrameworkPatcher -i $BUILT_PRODUCTS_DIR/$EXECUTABLE_FOLDER_PATH -resign -verbose

Per altre informazioni su come iniziare e scaricare l'SDK, vedere Introduzione a Microsoft Intune App SDK.

Criteri di uscita

Convalida del salvataggio in/apertura da restrizioni

Ignorare se non sono stati implementati controlli salva con nome e apri da.

Acquisire familiarità con ogni scenario in cui l'app può salvare i dati in archivi cloud o posizioni locali e aprire i dati da archivi cloud o posizioni locali.

Per semplicità, questi test presuppongono che l'app includa solo il supporto per il salvataggio e l'apertura dei dati da OneDrive for Business da un'unica posizione all'interno dell'app. Tuttavia, devi convalidare ogni combinazione: ogni posizione di salvataggio supportata in ogni posizione dell'app consente il salvataggio dei dati e ogni posizione aperta supportata in ogni posizione in cui l'app consente l'apertura dei dati.

Per questi test, installare l'app, integrarla con l'SDK e accedere con un account gestito prima di avviare il test.

Inoltre:

  • Impostare i criteri dell'account gestito come:
    • "Invia dati dell'organizzazione ad altre app" a "App gestite da criteri".
    • "Ricevere dati da altre app" a "App gestite da criteri".
Scenario Condizioni Procedura
Salva in, completamente consentito Criterio "Salva copie dei dati dell'organizzazione" impostato su "Consenti" - Passare alla posizione in cui l'app può salvare i dati in OneDrive for Business.
- Provare a salvare un documento in OneDrive for Business, nello stesso account gestito connesso all'app.
- Verificare che il salvataggio sia consentito.
Salva in, esentato - Criterio "Salva copie dei dati dell'organizzazione" impostato su "Blocca"
- Criterio "Consenti all'utente di salvare copie nei servizi selezionati" impostato solo su "OneDrive for Business"
- Passare alla posizione in cui l'app può salvare i dati in OneDrive for Business.
- Provare a salvare un documento in OneDrive for Business, nello stesso account gestito connesso all'app.
- Verificare che il salvataggio sia consentito.
- Se l'app lo consente, provare a salvare il file in un percorso di archiviazione cloud diverso e verificare che sia bloccato.
Salva in, bloccato Criterio "Salva copie dei dati dell'organizzazione" impostato su "Blocca" - Passare alla posizione in cui l'app può salvare i dati in OneDrive for Business.
- Provare a salvare un documento in OneDrive for Business, nello stesso account gestito connesso all'app.
- Verificare che il salvataggio sia bloccato.
- Se l'app lo consente, provare a salvare il file in un percorso di archiviazione cloud diverso e verificare che sia bloccato.
Aperto da, completamente consentito Criterio "Apri dati nei documenti dell'organizzazione" impostato su "Consenti" - Passare alla posizione in cui l'app può aprire i dati da OneDrive for Business.
- Prova ad aprire un documento da OneDrive for Business, dallo stesso account gestito connesso all'archiviazione dell'app.
- Verificare che l'apertura sia consentita.
Aperto da, esentato - Criterio "Apri dati nei documenti dell'organizzazione" impostato su "Blocca"
- Criterio "Consenti agli utenti di aprire dati da servizi selezionati" impostato solo su "OneDrive for Business"
- Passare alla posizione in cui l'app può aprire i dati da OneDrive for Business.
- Prova ad aprire un documento da OneDrive for Business, dallo stesso account gestito connesso all'archiviazione dell'app.
- Verificare che l'apertura sia consentita.
- Se l'app lo consente, provare ad aprire un altro file da un percorso di archiviazione cloud diverso e verificare che sia bloccato.
Apri da, bloccato Criterio "Apri dati nei documenti dell'organizzazione" impostato su "Blocca" - Passare alla posizione in cui l'app può aprire i dati da OneDrive for Business.
- Prova ad aprire un documento da OneDrive for Business, dallo stesso account gestito connesso all'archiviazione dell'app.
- Verificare che l'apertura sia bloccata.
- Se l'app lo consente, provare ad aprire un altro file da un percorso di archiviazione cloud diverso e verificare che sia bloccato.

Convalida delle azioni "Copia in"

Ignorare se non sono state implementate azioni 'Copia in'.

Per semplicità, questi test presuppongono che l'app includa solo il supporto per la copia di dati in applicazioni di Microsoft Office, ad esempio Microsoft Word, Excel e così via. Tuttavia, è necessario convalidare ogni combinazione: ogni posizione di copia in supportata in ogni posizione in cui l'app consente la copia dei dati.

Per questi test, installare l'app, integrarla con l'SDK e accedere con un account gestito prima di avviare il test.

Inoltre:

  • Sono stati completati tutti i passaggi di integrazione delle azioni "Copia in" con un'estensione azione per Microsoft Word e sono stati compilati ed eseguiti correttamente l'app.
  • Impostare i criteri dell'account gestito come:
    • "Invia dati dell'organizzazione ad altre app" a "App gestite da criteri".
Scenario Condizioni Procedura
Selezionare le app da esentare, Nessuna Criterio "Invia dati dell'organizzazione ad altre app" impostato su "App gestite da criteri" - Passare al punto in cui l'app può copiare i dati in Microsoft Word e avviare l'opzione di condivisione per tali dati.
- Conferma invece di visualizzare "Copia in Word" come opzione, è possibile visualizzare "Apri in Word".
- Premere "Apri in Word" e verificare che il documento venga copiato e visualizzato correttamente, dato che anche Word ha eseguito l'accesso con lo stesso account gestito.

Convalida delle azioni di stampa

Ignorare se non è stata implementata la stampa.

Per questo test, installare l'app, integrarla con l'SDK e accedere con un account gestito prima di avviare il test.

Inoltre:

  • Sono stati completati tutti i passaggi di integrazione della stampa e della compilazione e l'esecuzione dell'app è stata completata correttamente.
  • L'app implementa già avvisi/elementi di azione per gestire il caso quando la stampa non è consentita dall'amministratore IT dell'APP. In questo test, presupponendo che l'app richiederà un avviso agli utenti finali quando la stampa è bloccata.
Scenario Procedura
Stampa dei dati dell'organizzazione, Blocco - Passare al punto in cui l'app può visualizzare i dati e avviare l'opzione di condivisione per tali dati.
- Premere su "Stampa".
- Verificare che venga visualizzato un avviso di blocco e che la stampa non sia consentita.
Stampa dei dati dell'organizzazione, Consenti - Passare al punto in cui l'app può visualizzare i dati e avviare l'opzione di condivisione per tali dati.
- Premere su "Stampa".
- Conferma che viene visualizzata la visualizzazione "Stampa" ed è possibile selezionare una stampante e completare correttamente l'azione.

Convalida della ricezione delle configurazioni delle app

Ignorare se non è stata abilitata la configurazione dell'app di destinazione per le applicazioni iOS.

Intune è responsabile della distribuzione dei valori dei criteri di configurazione dell'app all'app; successivamente, l'app è responsabile dell'uso di tali valori per modificare il comportamento o l'interfaccia utente all'interno dell'app. I test end-to-end completi devono coprire entrambi i componenti.

Per verificare che Intune stia fornendo correttamente i criteri di configurazione delle app:

  1. Configurare un criterio di configurazione dell'app destinato all'app e distribuito nell'account di test.
  2. Accedere all'app con l'account di test.
  3. Spostarsi nell'app per esercitare ogni percorso di codice che chiama IntuneMAMAppConfigManagerappConfigForIdentity.
    • La registrazione dei risultati delle chiamate a appConfigForIdentity è un modo semplice per convalidare quali impostazioni vengono recapitate. Tuttavia, poiché gli amministratori possono immettere dati per le impostazioni di configurazione dell'app, prestare attenzione a non registrare dati utente privati.
  4. Vedere Convalidare i criteri di configurazione dell'app applicati.

Poiché le configurazioni delle app sono specifiche dell'app, solo tu sai come convalidare il modo in cui l'app deve modificare il comportamento o l'interfaccia utente per ogni impostazione di configurazione dell'app.

Durante il test, tenere presente quanto segue:

  • Verificare che tutti gli scenari siano coperti dalla creazione di criteri di configurazione di app di test diversi con ogni valore supportato dall'app.
  • Convalida della logica di risoluzione dei conflitti dell'app creando più criteri di configurazione dell'app di test con valori diversi per ogni impostazione.

Operazioni successive

Se questa guida è stata seguita in ordine e sono stati completati tutti i criteri di uscita precedenti, congratulazioni, l'app è ora completamente integrata con Intune App SDK e può applicare i criteri di protezione delle app. Vedere altre importanti funzionalità di partecipazione alle app, ad esempio Stage 5: Multi-Identity, Stage 6: Supporto dell'accesso condizionale di Protezione app e Stage 7: Funzionalità di visualizzazione Web per integrarle nell'app.

La protezione delle app è ora uno scenario di base per l'app. Continuare a fare riferimento a questa guida e all'appendice mentre si continua a sviluppare l'app.