API pour iOS
L’API XenMobile pour iOS est basée sur Objective-C. Cet article résume les API Citrix Endpoint Management™ par fonctionnalité et fournit les définitions d’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 la stratégie définie par les administrateurs de Citrix Endpoint Management. Pour les applications Premium non gérées, renvoie la valeur de la stratégie définie dans Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xml. Pour les applications Générales non gérées, renvoie nil.
Paramètres :
policyName – Nom de la stratégie à rechercher dans default_policies.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égies MDX est intégré à l’application en tant que fichier XML. L’infrastructure backend de Citrix Endpoint Management (coffres de clés) est interrogée pour obtenir des clés partielles de chiffrement de données (secrets), que MDX utilisera pour chiffrer les données de la 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;Lance une requête de connexion MDX avec Secure Hub.
-
isAppLaunchedByWorxHome
+(BOOL) isAppLaunchedByWorxHome;Vérifie si une requête d’URL inter-applications provient de Secure Hub ou d’une autre application sur l’appareil, ce qui est nécessaire si une application doit être consciente de la communication de contrôle MDX. Sous iOS, les applications peuvent s’enregistrer pour des schémas d’URL spécifiques. Un schéma d’URL est la première partie d’une URL, jusqu’au signe deux-points inclus, mais sans le signe deux-points. Si une URL commence par
http://, le schéma est http.Les applications compatibles MDX et Secure Hub communiquent à l’aide de schémas d’URL personnalisés. Par exemple, pour gérer les URL mailto: provenant d’autres applications, Secure Mail nécessite le schéma d’URL ctxmail. Pour gérer les URL http ou https provenant d’autres applications, Secure Web nécessite respectivement le schéma d’URL ctxmobilebrowser ou ctxmobilebrowsers. Pour plus de détails sur la stratégie de schémas d’URL d’application MDX et la stratégie d’URL autorisées, consultez Stratégies MDX pour les applications iOS.
Renvoie des résultats précis lorsqu’il est interrogé à tout moment ou n’importe où pendant ou après les appels d’événements de délégué UIApplication suivants :
-
Lorsque l’application se charge depuis le springboard ou un appel openURL :
application:willFinishLaunchingWithOptions: -
application:didFinishLaunchingWithOptions:
applicationDidFinishLaunching: -
Lorsque l’application est activée ou réactivée par les utilisateurs depuis le springboard de l’appareil
-
applicationDidBecomeActive:
-
Lorsque l’application est activée ou réactivée par un appel openURL :
-
application:openURL:sourceApplication:annotation:
application:handleOpenURL:
Important :
Vous ne devez pas interroger pendant applicationWillEnterForeground:.
- managedUserInformation
extern __attribute__((visibility ("default"))) NSString *const kXenMobileUsername; +(NSDictionary*) managedUserInformation;Renvoie une chaîne contenant le nom d’utilisateur (UserName) d’un 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, si l’application n’est pas gérée ou si 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 partagé pour partager du contenu géré entre des applications qui ont le même groupe d’accès au trousseau. Par exemple, vous pouvez partager des certificats utilisateur via une application inscrite afin que les applications puissent obtenir un certificat du coffre sécurisé au lieu de Secure Hub.
Paramètres :
vaultName – Nom du coffre partagé Citrix Endpoint Management.
accessGroup – Nom du groupe d’accès au trousseau. Il peut s’agir du groupe d’accès MDX par défaut, nommé TEAMID_A.appOriginalBundleID, ou d’un groupe d’accès au trousseau que vous utiliserez pour partager des données entre les applications.
-
Propriétés de type de données de 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 de type de données de coffre suivantes sont renvoyées :
exists – Indique si le coffre avec le vaultName spécifié a été trouvé.
isAccessible – Indique si le coffre se trouve dans le accessGroup spécifié et peut être accédé.
vaultData – Contenu du coffre partagé. Lorsque vous initialisez le coffre pour la première fois, vaultData est un dictionnaire nil.
-
getVaultDataFromVault
+ (NSDictionary*) getVaultDataFromVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;Lit les données du coffre partagé Citrix Endpoint Management. Il existe trois façons 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;et en lisant la propriété vaultData.
Pour un exemple de code, consultez l’exemple de coffre partagé dans cet article.
Paramètres :
vaultName – Nom du coffre partagé Citrix Endpoint Management.
accessGroup – Nom du groupe d’accès au trousseau. Il peut s’agir du groupe d’accès MDX par défaut, nommé TEAMID_A.appOriginalBundleID, ou d’un groupe d’accès au trousseau que vous utiliserez pour partager des 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 façons d’enregistrer les données du coffre, comme suit :
-
Utilisez directement saveVaultData:toVault:accessGroup:error:.
-
Utilisez updateAndSynchronizeVaultItem: ou updateAndSynchronizeVaultItems (décrits 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 l’exemple de coffre partagé dans cet article.
Paramètres :
vaultData – Données à enregistrer dans le coffre partagé Citrix Endpoint Management. Les données stockées dans le coffre partagé sont un dictionnaire de paires clé/valeur, tel que @{@”username”:@”;andreo”}.
vaultName – Nom du coffre partagé Citrix Endpoint Management.
accessGroup – Nom du groupe d’accès au trousseau. Il peut s’agir du groupe d’accès MDX par défaut, nommé TEAMID_A.appOriginalBundleID, ou d’un groupe d’accès au trousseau que vous utiliserez pour partager des 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é de 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 du coffre. Par exemple, si l’entrée de coffre existante contient {a:123, b:234, c:305} et que vous utilisez cette API avec des données pour mettre à jour {c:345, d:456}, cette API mettra à jour les données du coffre vers {a:123, b:234, c:345, d:456}. Pour un exemple de code, consultez l’exemple de coffre partagé dans cet article.
Reportez-vous à saveVaultData ci-dessus pour deux autres façons d’enregistrer les données du coffre.
Paramètres :
vaultItem – Une paire clé/valeur unique, sous la forme @{@";username::@";andreo"}.
vaultItems – Une liste de paires clé/valeur.
-
deleteVault
+ (BOOL) deleteVault:(NSString*)vaultName accessGroup:(NSString*)accessGroup error:(NSError *__autoreleasing *)error;Supprime le coffre partagé spécifié.
Paramètres :
vaultName – Le nom du coffre partagé de Citrix Endpoint Management.
accessGroup – Le nom du groupe d’accès au trousseau 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 l’avoir supprimé avec 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-->