API pour iOS

L’API XenMobile pour iOS est basée sur Objective-C. Cet article décrit les API Citrix Endpoint Management par fonctionnalité et fournit les définitions de l’API.

Gestion des applications

  • isAppManaged

Interaction avec Secure Hub

  • isMDXAccessManagerInstalled
  • logonMdxWithFlag
  • isAppLaunchedByWorxHome

Stratégies MDX

  • getValueOfPolicy

Coffre partagé

  • getVaultDataFromVault
  • saveVaultData
  • updateAndSynchronizeVaultItem
  • updateAndSynchronizeVaultItems
  • deleteVault
  • deleteVaultWithError

Données utilisateur

  • managedUserInformation

Classe MdxManager

Méthodes

  • getValueOfPolicy

    +(NSString*) getValueOfPolicy:(NSString*)policyName error:(NSError **) error;

    Pour les applications gérées, renvoie la valeur de stratégie définie par les administrateurs Citrix Endpoint Management. Pour les applications Premium non gérées, renvoie la valeur de stratégie définie dans Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xml. Pour les applications General non gérées, renvoie nul.

    Paramètres :

    policyName – nom de la stratégie à rechercher dans defaultpolicies.xml.

    Exemple :

    +(NSString*) getValueOfPolicy:(NSString*)DisableCamera error:(NSError **) error;

  • isMDXAccessManagerInstalled

    +(BOOL) isMDXAccessManagerInstalled: (NSError **) error;

    Vérifie si Secure Hub est installé, ce qui signifie que le contrôle MDX de l’application est activé, même si l’application n’est pas gérée. Renvoie true si Secure Hub est installé.

  • isAppManaged

    +(BOOL) isAppManaged;

    Vérifie si l’application est actuellement gérée par MDX, ce qui signifie que le bundle de stratégie MDX est incorporé dans l’application en tant que fichier XML. L’infrastructure principale de Citrix Endpoint Management (coffres de clés) est interrogée pour obtenir les clés partielles de cryptage des données (secrets) que MDX utilisera pour crypter les données de base de données de l’application (iOS 9 et versions ultérieures). Renvoie true si l’application est gérée.

  • logonMdxWithFlag

    +(BOOL) logonMdxWithFlag:(BOOL)force error:(NSError**) error;

    Initie une requête d’ouverture de session MDX avec Secure Hub.

  • isAppLaunchedByWorxHome

    +(BOOL) isAppLaunchedByWorxHome;

    Vérifie si une requête d’URL inter-application provient de Secure Hub ou d’une autre application de l’appareil, ce qui est nécessaire si une application doit être informée des communications de contrôle de MDX. Sur iOS, les applications peuvent être inscrites pour certains modèles d’URL. Un modèle d’URL est la première partie d’une adresse URL, celle qui se trouve avant les deux-points. Si une URL commence par http://, le modèle est http.

    Les applications MDX communiquent avec Secure Hub à l’aide de modèles d’URL personnalisés. Par exemple, pour traiter les adresses URL mailto: à partir d’autres applications, Secure Mail requiert le modèle d’URL ctxmail. Pour traiter les adresses URL http ou https à partir d’autres applications, Secure Web requiert le modèle d’URL ctxmobilebrowser ou ctxmobilebrowsers, respectivement. Pour de plus amples informations sur la stratégie MDX Modèles d’URL d’application et la stratégie URL autorisées, consultez la section Stratégies MDX pour applications iOS.

    Renvoie des résultats corrects lors d’une interrogation à n’importe quel emplacement, à tout moment, pendant ou après les appels d’événement de délégation UIApplication suivants :

    • Lorsque l’application est chargée à partir du springboard ou d’un appel openURL :

       application:willFinishLaunchingWithOptions:
      
       application:didFinishLaunchingWithOptions:
      
       applicationDidFinishLaunching:
      
    • Lorsque l’application est activée ou réactivée par les utilisateurs à partir du springboard de l’appareil

       applicationDidBecomeActive:
      

    Important :

    vous ne devez pas effectuer des requêtes durant applicationWillEnterForeground:.

    • Lorsque l’application est activée ou réactivée par un appel openURL :

       application:openURL:sourceApplication:annotation:
      
       application:handleOpenURL:
      
  • managedUserInformation

    extern __attribute__((visibility ("default"))) NSString *const kXenMobileUsername; +(NSDictionary*) managedUserInformation;

    Renvoie une chaîne contenant le nom d’utilisateur de l’utilisateur inscrit exécutant une application gérée par MDX, quel que soit l’état de connexion de l’utilisateur. Renvoie une chaîne vide si l’utilisateur n’est pas inscrit, l’application n’est pas gérée, ou l’application n’est pas encapsulée.

Classe XenMobileSharedKeychainVault

Méthodes

  • initWithVaultName

    - (instancetype) initWithVaultName:(NSString*)vaultName accessGroup:(NSString*)accessGroup;

    Initialise un coffre partagé Citrix Endpoint Management.

    Utilisez l’API de coffre sécurisé pour partager le contenu géré entre les applications qui ont le même groupe de trousseaux d’accès. Par exemple, vous pouvez partager des certificats utilisateur par le biais d’une application inscrite de façon à ce que les applications puissent obtenir un certificat depuis le coffre sécurisé plutôt que depuis Secure Hub.

    Paramètres :

    vaultName – nom du coffre partagé Citrix Endpoint Management.

    accessGroup – nom du groupe de trousseaux d’accès. Il peut s’agir du groupe d’accès MDX par défaut, appelé TEAMID_A.appOriginalBundleID, ou d’un groupe de trousseaux d’accès que vous utiliserez pour partager les données entre les applications.

  • Propriétés du type de données du coffre

       @property(nonatomic,readonly) BOOL exists;
    
       @property(nonatomic,readonly) BOOL isAccessible;
    
       @property(nonatomic,strong) NSMutableDictionary* vaultData
       <!--NeedCopy-->
    

    Après avoir initialisé un coffre, les propriétés du type de données du coffre suivantes sont renvoyées :

    exists – indique si le coffre avec la valeur spécifiée vaultName a été trouvé.

    isAccessible – indique si le coffre se trouve dans le groupe accessGroup et est accessible.

    vaultData – contenu du coffre partagé. Lors de la première initialisation du coffre, vaultData est un dictionnaire de valeur nulle.

  • getVaultDataFromVault

    + (NSDictionary*) getVaultDataFromVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;

    Lit les données depuis le coffre partagé Citrix Endpoint Management. Il existe trois manières de lire les données du coffre, comme suit :

    • Utilisez directement getVaultDataFromVault:accessGroup:error.

    • Créez l’instance XenMobileSharedKeychainVault, puis lisez la propriété vaultData.

    • Créez l’instance XenMobileSharedKeychainVault, puis rechargez les données du coffre à l’aide de -(BOOL) loadDataWithError:(NSError *__autoreleasing *)error;, puis lisez la propriété VaultData.

    Pour un exemple de code, consultez la section Exemple de coffre partagé de cet article.

    Paramètres :

    vaultName – nom du coffre partagé Citrix Endpoint Management.

    accessGroup – nom du groupe de trousseaux d’accès. Il peut s’agir du groupe d’accès MDX par défaut, appelé TEAMID_A.appOriginalBundleID, ou d’un groupe de trousseaux d’accès que vous utiliserez pour partager les données entre les applications.

  • saveVaultData

    + (BOOL) saveVaultData:(NSDictionary*)vaultData toVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;

    Enregistre les données dans le coffre partagé Citrix Endpoint Management. Il existe trois manières d’enregistrer les données du coffre, comme suit :

    • Utilisez directement saveVaultData:toVault:accessGroup:error:.

    • Utilisez updateAndSynchronizeVaultItem: ou updateAndSynchronizeVaultItems (décrit ci-après dans ce tableau).

    • Utilisez- (BOOL)synchronizeWithError:(NSError *__autoreleasing *)error; en créant l’instance XenMobileSharedKeychainVault, en chargeant les données du coffre, en modifiant les données du coffre, puis en synchronisant les données.

    Pour un exemple de code, consultez la section Exemple de coffre partagé de cet article.

    Paramètres :

    vaultData – données à enregistrer dans le coffre partagé Citrix Endpoint Management. Les données stockées dans le coffre partagé constituent un dictionnaire de paires clé/valeur, telles que @{@”username”:@”andreo”}.

    vaultName – nom du coffre partagé Citrix Endpoint Management.

    accessGroup – nom du groupe de trousseaux d’accès. Il peut s’agir du groupe d’accès MDX par défaut, appelé TEAMID_A.appOriginalBundleID, ou d’un groupe de trousseaux d’accès que vous utiliserez pour partager les données entre les applications.

  • updateAndSynchronizeVaultItem

    updateAndSynchronizeVaultItems

    - (BOOL)updateAndSynchronizeVaultItem:(NSString*)vaultItem withValue:(id)itemValue error:(NSError *__autoreleasing *)error;

    - (BOOL)updateAndSynchronizeVaultItems:(NSDictionary*)vaultItems error:(NSError *__autoreleasing *)error;

    Met à jour les données dans le coffre partagé Citrix Endpoint Management. Pour utiliser cette méthode, créez l’instance XenMobileSharedKeychainVault, puis synchronisez-la en ajoutant ou en mettant à jour des éléments de données de coffre. Par exemple, si l’entrée du coffre comporte {a:123, b:234, c:305} et que nous utilisons cette API avec les données de mise à jour {c:345, d:456}, cette API met les données du coffre à jour vers {a:123, b:234, c:345, d:456}. Pour un exemple de code, consultez la section Exemple de coffre partagé de cet article.

    Consultez la section saveVaultData ci-dessus pour en savoir plus sur les deux autres méthodes d’enregistrement des données du coffre.

    Paramètres :

    vaultItem – paire clé/valeur unique au format @{@";username::@";andreo"}.

    vaultItems – liste des paires clé/valeur.

  • deleteVault

    + (BOOL) deleteVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;

    Supprime le coffre partagé spécifié.

    Paramètres :

    vaultName – nom du coffre partagé Citrix Endpoint Management.

    accessGroup – nom du groupe de trousseaux d’accès utilisé par le coffre que vous souhaitez supprimer.

  • deleteVaultWithError

    -(BOOL) deleteVaultWithError:(NSError *__autoreleasing *)error;

    Supprime le coffre partagé renvoyé par l’instance XenMobileSharedKeychainVault. Vous devez libérer l’objet après sa suppression par deleteVaultWithError.

Exemple de coffre partagé

#import "XenMobileSharedKeychainVault.h"

@interface ClassA ()
...
@property(nonatomic,strong) XenMobileSharedKeychainVault* XenMobileSharedKeychainVault;
...
@end

@implementation ClassA
...
@synthesize XenMobileSharedKeychainVault = _XenMobileSharedKeychainVault;


...
#ifdef USE_CLASS_INSTANCE_METHODS
-(XenMobileSharedKeychainVault*)XenMobileSharedKeychainVault
{
if(_XenMobileSharedKeychainVault==nil) {
_XenMobileSharedKeychainVault = [[XenMobileSharedKeychainVault alloc]
      initWithVaultName:<VAULT_NAME>
      accessGroup:kXenMobileKeychainAccessGroup];
}
return _XenMobileSharedKeychainVault;
}
#endif

-(void)read
{
NSError* error=nil;
#ifdef USE_CLASS_INSTANCE_METHODS
NSDictionary* vaultDictionary = nil;
if([self.XenMobileSharedKeychainVault loadDataWithError:&error]) {
vaultDictionary = [self.XenMobileSharedKeychainVault vaultData];
}
#else
NSDictionary* vaultDictionary = [XenMobileSharedKeychainVault
      getVaultDataFromVault:<VAULT_NAME>
      accessGroup:kXenMobileKeychainAccessGroup error:&error];
#endif

}

-(void)save
{
NSError* error=nil;
/// check error handling here...

NSDictionary* dictToSave = @{<VAULT_DATA_DICTIONARY_OBJECTS>};
#ifdef USE_CLASS_INSTANCE_METHODS
#ifdef USE_CLASS_INSTANCE_METHODS_TO_UPDATE
BOOL result = [self.XenMobileSharedKeychainVault
      updateAndSynchronizeVaultItems:dictToSave error:&error];
#else
self.XenMobileSharedKeychainVault.vaultData = [NSMutableDictionary
      dictionaryWithDictionary:dictToSave];
BOOL result = [self.XenMobileSharedKeychainVault synchronizeWithError:&error];
#endif
#else
BOOL result = [XenMobileSharedKeychainVault
      saveVaultData:dictToSave toVault:<VAULT_NAME>
      accessGroup:kXenMobileKeychainAccessGroup error:&error];
#endif

}

-(void)delete
{
NSError* error=nil;
#ifdef USE_CLASS_INSTANCE_METHODS
BOOL result = [self.XenMobileSharedKeychainVault deleteVaultWithError:&error];
#else
BOOL result = [XenMobileSharedKeychainVault deleteVault:<VAULT_NAME>
      accessGroup:kXenMobileKeychainAccessGroup error:&error];
#endif

}

...

@end
<!--NeedCopy-->
API pour iOS