API für iOS

Die XenMobile API für iOS basiert auf Objective-C. Dieser Artikel fasst die Citrix Endpoint Management™ APIs nach Funktionen zusammen und stellt die API-Definitionen bereit.

App-Verwaltung

  • isAppManaged

Interaktion mit Secure Hub

  • isMDXAccessManagerInstalled
  • logonMdxWithFlag
  • isAppLaunchedByWorxHome

  • MDX-Richtlinien

  • getValueOfPolicy

  • Gemeinsamer Tresor

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

Benutzerdaten

  • managedUserInformation

  • Klasse MdxManager

Methoden

  • getValueOfPolicy

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

    Für verwaltete Apps gibt dies den von Citrix Endpoint Management-Administratoren festgelegten Richtlinienwert zurück. Für nicht verwaltete Premium-Apps gibt dies den in Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xml festgelegten Richtlinienwert zurück. Für nicht verwaltete allgemeine Apps wird nil zurückgegeben.

    Parameter:

    policyName – Der Name der Richtlinie, nach der in default_policies.xml gesucht werden soll.

    Beispiel:

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

    • isMDXAccessManagerInstalled

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

    Prüft, ob Secure Hub installiert ist, was bedeutet, dass die MDX-Steuerung der App aktiviert ist, auch wenn die App nicht verwaltet wird. Gibt true zurück, wenn Secure Hub installiert ist.

    • isAppManaged

    +(BOOL) isAppManaged;

  • Prüft, ob die App derzeit von MDX verwaltet wird, was bedeutet, dass das MDX-Richtlinienpaket als XML-Datei in die App eingebettet ist. Die Backend-Infrastruktur von Citrix Endpoint Management (Schlüsseltresore) wird nach Teilschlüsseln (Geheimnissen) zur Datenverschlüsselung abgefragt, die MDX zur Verschlüsselung von App-Datenbankdaten (iOS 9 und höher) verwenden wird. Gibt true zurück, wenn die App verwaltet wird.

  • logonMdxWithFlag

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

    Leitet eine MDX-Anmeldeanforderung mit Secure Hub ein.

  • isAppLaunchedByWorxHome

    +(BOOL) isAppLaunchedByWorxHome;

    Prüft, ob eine anwendungsübergreifende URL-Anforderung von Secure Hub oder einer anderen App auf dem Gerät stammt, was erforderlich ist, wenn eine App über die MDX-Steuerungskommunikation informiert sein muss. Unter iOS können sich Apps für bestimmte URL-Schemata registrieren. Ein URL-Schema ist der erste Teil einer URL, bis einschließlich, aber nicht einschließlich des Doppelpunkts. Wenn eine URL mit http:// beginnt, ist das Schema http.

    MDX-fähige Apps und Secure Hub kommunizieren über benutzerdefinierte URL-Schemata. Um beispielsweise mailto:-URLs von anderen Apps zu verarbeiten, benötigt Secure Mail das URL-Schema ctxmail. Um http- oder https-URLs von anderen Apps zu verarbeiten, benötigt Secure Web das URL-Schema ctxmobilebrowser bzw. ctxmobilebrowsers. Einzelheiten zur MDX-App-URL-Schemata-Richtlinie und zur Richtlinie für zulässige URLs finden Sie unter MDX-Richtlinien für iOS-Apps.

    Gibt genaue Ergebnisse zurück, wenn jederzeit oder überall während oder nach den folgenden UIApplication-Delegate-Ereignisaufrufen abgefragt wird:

    • Wenn die App vom Springboard oder einem openURL-Aufruf geladen wird:

       application:willFinishLaunchingWithOptions:
      
    • application:didFinishLaunchingWithOptions:

       applicationDidFinishLaunching:
      
    • Wenn die App von Benutzern über das Geräte-Springboard aktiviert oder reaktiviert wird

    • applicationDidBecomeActive:

    Wichtig:

    • Sie dürfen während applicationWillEnterForeground: keine Abfragen durchführen.

    • Wenn die App durch einen openURL-Aufruf aktiviert oder reaktiviert wird:

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

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

    Gibt eine Zeichenfolge zurück, die den Benutzernamen eines registrierten Benutzers enthält, der eine MDX-verwaltete App ausführt, unabhängig vom Anmeldestatus des Benutzers. Gibt eine leere Zeichenfolge zurück, wenn der Benutzer nicht registriert ist, die App nicht verwaltet wird oder die App nicht gewrappt ist.

Klasse XenMobileSharedKeychainVault

  • Methoden

  • initWithVaultName

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

  • Initialisiert einen gemeinsam genutzten Citrix Endpoint Management-Tresor.

    Verwenden Sie die API für den gemeinsamen Tresor, um verwaltete Inhalte zwischen Apps zu teilen, die dieselbe Schlüsselbund-Zugriffsgruppe haben. Sie können beispielsweise Benutzerzertifikate über eine registrierte App teilen, sodass Apps ein Zertifikat aus dem sicheren Tresor anstelle von Secure Hub abrufen können.

    Parameter:

    vaultName – Der Name des gemeinsam genutzten Citrix Endpoint Management-Tresors.

    accessGroup – Der Name der Schlüsselbund-Zugriffsgruppe. Dies kann die Standard-MDX-Zugriffsgruppe mit dem Namen TEAMID_A.appOriginalBundleID sein oder eine Schlüsselbund-Zugriffsgruppe, die Sie zum Teilen von Daten zwischen Apps verwenden werden.

  • Eigenschaften des Tresordatentyps

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

    Nachdem Sie einen Tresor initialisiert haben, werden diese Eigenschaften des Tresordatentyps zurückgegeben:

    exists – Gibt an, ob der Tresor mit dem angegebenen vaultName gefunden wurde.

    isAccessible – Gibt an, ob sich der Tresor in der angegebenen accessGroup befindet und darauf zugegriffen werden kann.

    vaultData – Ist der Inhalt des gemeinsam genutzten Tresors. Wenn Sie den Tresor zum ersten Mal initialisieren, ist vaultData ein nil-Wörterbuch.

  • getVaultDataFromVault

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

    Liest Daten aus dem gemeinsam genutzten Citrix Endpoint Management-Tresor. Dies ist eine von drei Möglichkeiten, Tresordaten zu lesen, wie folgt:

    • Verwenden Sie direkt getVaultDataFromVault:accessGroup:error.

    • Erstellen Sie die XenMobileSharedKeychainVault-Instanz und lesen Sie dann die vaultData-Eigenschaft.

    • Erstellen Sie die XenMobileSharedKeychainVault-Instanz und laden Sie dann die Tresordaten mit -(BOOL) loadDataWithError:(NSError *__autoreleasing *)error; neu und lesen Sie die vaultData-Eigenschaft.

    Beispielcode finden Sie im Abschnitt „Beispiel für gemeinsamen Tresor“ in diesem Artikel.

    Parameter:

    vaultName – Der Name des gemeinsam genutzten Citrix Endpoint Management-Tresors.

    accessGroup – Der Name der Schlüsselbund-Zugriffsgruppe. Dies kann die Standard-MDX-Zugriffsgruppe mit dem Namen TEAMID_A.appOriginalBundleID sein oder eine Schlüsselbund-Zugriffsgruppe, die Sie zum Teilen von Daten zwischen Apps verwenden werden.

  • saveVaultData

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

    Speichert Daten im gemeinsam genutzten Citrix Endpoint Management-Tresor. Dies ist eine von drei Möglichkeiten, Tresordaten zu speichern, wie folgt:

    • Verwenden Sie direkt saveVaultData:toVault:accessGroup:error:.

    • Verwenden Sie updateAndSynchronizeVaultItem: oder updateAndSynchronizeVaultItems (im Folgenden in dieser Tabelle beschrieben).

    • Verwenden Sie - (BOOL)synchronizeWithError:(NSError *__autoreleasing *)error;, indem Sie die XenMobileSharedKeychainVault-Instanz erstellen, die Tresordaten laden, die Tresordaten ändern und dann die Daten synchronisieren.

    Beispielcode finden Sie im Abschnitt „Beispiel für gemeinsamen Tresor“ in diesem Artikel.

    Parameter:

    vaultData – Die Daten, die im gemeinsam genutzten Citrix Endpoint Management-Tresor gespeichert werden sollen. Im gemeinsamen Tresor gespeicherte Daten sind ein Wörterbuch von Schlüssel/Wert-Paaren, z. B. @{@”username”:@”;andreo”}.

    vaultName – Der Name des gemeinsam genutzten Citrix Endpoint Management-Tresors.

    accessGroup – Der Name der Schlüsselbund-Zugriffsgruppe. Dies kann die Standard-MDX-Zugriffsgruppe mit dem Namen TEAMID_A.appOriginalBundleID sein oder eine Schlüsselbund-Zugriffsgruppe, die Sie zum Teilen von Daten zwischen Apps verwenden werden.

  • updateAndSynchronizeVaultItem

    updateAndSynchronizeVaultItems

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

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

Aktualisiert Daten im freigegebenen Citrix Endpoint Management-Tresor. Um diese Methode zu verwenden, erstellen Sie die Instanz XenMobileSharedKeychainVault und synchronisieren Sie sie dann, indem Sie Tresordatenobjekte hinzufügen oder aktualisieren. Wenn der vorhandene Tresoreintrag beispielsweise {a:123, b:234, c:305} enthält und wir diese API mit Daten verwenden, um {c:345, d:456} zu aktualisieren, aktualisiert diese API die Tresordaten auf {a:123, b:234, c:345, d:456}. Beispielcode finden Sie unter Gemeinsames Tresor-Beispiel in diesem Artikel.

Siehe saveVaultData oben für zwei weitere Möglichkeiten, Tresordaten zu speichern.

Parameter:

vaultItem – Ein einzelnes Schlüssel/Wert-Paar in der Form @{@";username::@";andreo"}.

vaultItems – Eine Liste von Schlüssel/Wert-Paaren.

  • deleteVault

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

Löscht den angegebenen freigegebenen Tresor.

Parameter:

vaultName – Der Name des freigegebenen Citrix Endpoint Management-Tresors.

accessGroup – Der Name der Schlüsselbund-Zugriffsgruppe, die von dem Tresor verwendet wird, den Sie löschen möchten.

  • deleteVaultWithError

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

Löscht den freigegebenen Tresor, der von der Instanz XenMobileSharedKeychainVault zurückgegeben wird. Sie müssen das Objekt freigeben, nachdem Sie es mit deleteVaultWithError gelöscht haben.

Beispiel für einen freigegebenen Tresor

#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 für iOS