iOS用API

iOS用XenMobile APIはObjective-Cに基づいています。この記事では、Citrix Endpoint Management™ APIを機能別に要約し、API定義を提供します。

アプリ管理

  • isAppManaged

Secure Hubとの対話

  • isMDXAccessManagerInstalled
  • logonMdxWithFlag
  • isAppLaunchedByWorxHome

  • MDXポリシー

  • getValueOfPolicy

  • 共有ボールト

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

ユーザーデータ

  • managedUserInformation

  • クラスMdxManager

メソッド

  • getValueOfPolicy

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

    管理対象アプリの場合、Citrix Endpoint Management管理者が設定したポリシー値を返します。管理対象外のPremiumアプリの場合、Applications/Citrix/MDXToolkit/data/MDXSDK/default_policies.xmlで設定されたポリシー値を返します。管理対象外のGeneralアプリの場合、nilを返します。

    パラメーター:

    policyName – default_policies.xmlで検索するポリシーの名前。

    例:

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

    • isMDXAccessManagerInstalled

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

    Secure Hubがインストールされているかどうかを確認します。これは、アプリが管理対象外であっても、アプリのMDX制御が有効になっていることを意味します。Secure Hubがインストールされている場合、trueを返します。

    • isAppManaged

    +(BOOL) isAppManaged;

  • アプリが現在MDXによって管理されているかどうかを確認します。これは、MDXポリシーバンドルがXMLファイルとしてアプリに埋め込まれていることを意味します。Citrix Endpoint Managementのバックエンドインフラストラクチャ(キーボールト)は、データ暗号化の部分キー(シークレット)について照会され、MDXはこれを使用してアプリデータベースデータ(iOS 9以降)を暗号化します。アプリが管理されている場合、trueを返します。

  • logonMdxWithFlag

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

    Secure HubでMDXログオン要求を開始します。

  • isAppLaunchedByWorxHome

    +(BOOL) isAppLaunchedByWorxHome;

    アプリがMDX制御通信を認識する必要がある場合に、アプリケーション間のURL要求がSecure Hubからのものか、デバイス上の他のアプリからのものかを確認します。iOSでは、アプリは特定のURLスキームに登録できます。URLスキームは、URLの最初の部分で、コロンを含みません。URLがhttp://で始まる場合、スキームはhttpです。

    MDX対応アプリとSecure Hubは、カスタムURLスキームを使用して通信します。たとえば、他のアプリからのmailto: URLを処理するために、Secure MailはURLスキームctxmailを必要とします。他のアプリからのhttpまたはhttps URLを処理するために、Secure WebはそれぞれURLスキームctxmobilebrowserまたはctxmobilebrowsersを必要とします。MDXアプリURLスキームポリシーと許可されたURLポリシーの詳細については、「iOSアプリ用MDXポリシー」を参照してください。

    以下のUIApplicationデリゲートイベント呼び出し中または呼び出し後にいつでも照会すると、正確な結果が返されます。

    • スプリングボードまたはopenURL呼び出しからアプリがロードされる場合:

       application:willFinishLaunchingWithOptions:
      
    • application:didFinishLaunchingWithOptions:

       applicationDidFinishLaunching:
      
    • デバイスのスプリングボードからユーザーによってアプリがアクティブ化または再アクティブ化される場合

    • applicationDidBecomeActive:

    重要:

    • applicationWillEnterForeground:中に照会してはいけません。

    • openURL呼び出しによってアプリがアクティブ化または再アクティブ化される場合:

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

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

    ユーザーのサインオンステータスに関係なく、MDX管理対象アプリを実行している登録済みユーザーのUserNameを含む文字列を返します。ユーザーが登録されていない場合、アプリが管理されていない場合、またはアプリがラップされていない場合は、空の文字列を返します。

クラスXenMobileSharedKeychainVault

  • メソッド

  • initWithVaultName

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

  • Citrix Endpoint Management共有ボールトを初期化します。

    共有ボールトAPIを使用して、同じキーチェーンアクセスグループを持つアプリ間で管理対象コンテンツを共有できます。たとえば、登録済みアプリを介してユーザー証明書を共有することで、アプリはSecure Hubからではなく、セキュアボールトから証明書を取得できます。

    パラメーター:

    vaultName – Citrix Endpoint Management共有ボールトの名前。

    accessGroup – キーチェーンアクセスグループの名前。これは、デフォルトのMDXアクセスグループであるTEAMID_A.appOriginalBundleID、またはアプリ間でデータを共有するために使用するキーチェーンアクセスグループにすることができます。

  • ボールトデータ型プロパティ

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

    ボールトを初期化すると、これらのボールトデータ型プロパティが返されます。

    exists – 指定されたvaultNameを持つボールトが見つかったかどうかを示します。

    isAccessible – ボールトが指定されたaccessGroup内にあり、アクセス可能かどうかを示します。

    vaultData – 共有ボールトの内容です。ボールトを最初に初期化するとき、vaultDataはnil辞書です。

  • getVaultDataFromVault

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

    Citrix Endpoint Management共有ボールトからデータを読み取ります。これは、ボールトデータを読み取る3つの方法の1つで、次のとおりです。

    • getVaultDataFromVault:accessGroup:errorを直接使用します。

    • XenMobileSharedKeychainVaultインスタンスを作成し、vaultDataプロパティを読み取ります。

    • XenMobileSharedKeychainVaultインスタンスを作成し、-(BOOL) loadDataWithError:(NSError *__autoreleasing *)error;を使用してボールトデータをリロードし、vaultDataプロパティを読み取ります。

    コード例については、この記事の「共有ボールトの例」を参照してください。

    パラメーター:

    vaultName – Citrix Endpoint Management共有ボールトの名前。

    accessGroup – キーチェーンアクセスグループの名前。これは、デフォルトのMDXアクセスグループであるTEAMID_A.appOriginalBundleID、またはアプリ間でデータを共有するために使用するキーチェーンアクセスグループにすることができます。

  • saveVaultData

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

    Citrix Endpoint Management共有ボールトにデータを保存します。これは、ボールトデータを保存する3つの方法の1つで、次のとおりです。

    • saveVaultData:toVault:accessGroup:error:を直接使用します。

    • updateAndSynchronizeVaultItem:またはupdateAndSynchronizeVaultItems(この表の次に説明)を使用します。

    • XenMobileSharedKeychainVaultインスタンスを作成し、ボールトデータをロードし、ボールトデータを変更してからデータを同期することで、- (BOOL)synchronizeWithError:(NSError *__autoreleasing *)error;を使用します。

    コード例については、この記事の「共有ボールトの例」を参照してください。

    パラメーター:

    vaultData – Citrix Endpoint Management共有ボールトに保存するデータ。共有ボールトに保存されるデータは、@{@”username”:@”;andreo”}のようなキー/値ペアの辞書です。

    vaultName – Citrix Endpoint Management共有ボールトの名前。

    accessGroup – キーチェーンアクセスグループの名前。これは、デフォルトのMDXアクセスグループであるTEAMID_A.appOriginalBundleID、またはアプリ間でデータを共有するために使用するキーチェーンアクセスグループにすることができます。

  • updateAndSynchronizeVaultItem

    updateAndSynchronizeVaultItems

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

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

Citrix Endpoint Management共有ボールト内のデータを更新します。このメソッドを使用するには、XenMobileSharedKeychainVaultインスタンスを作成し、ボールトデータ項目を追加または更新して同期します。例えば、既存のボールトエントリが{a:123, b:234, c:305}であり、このAPIを{c:345, d:456}に更新するデータと共に使用すると、このAPIはボールトデータを{a:123, b:234, c:345, d:456}に更新します。コード例については、この記事の「共有ボールトの例」を参照してください。

  ボールトデータを保存する他の2つの方法については、上記の**saveVaultData**を参照してください。

  パラメータ:

  *vaultItem* – `@{@";username::@";andreo"}`の形式の単一のキー/値ペア。

  *vaultItems* – キー/値ペアのリスト。
  • deleteVault

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

    指定された共有ボールトを削除します。

    パラメータ:

    vaultName – Citrix Endpoint Management共有ボールトの名前。

    accessGroup – 削除するボールトで使用されるキーチェーンアクセスグループの名前。

  • deleteVaultWithError

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

    XenMobileSharedKeychainVaultインスタンスによって返された共有ボールトを削除します。deleteVaultWithErrorでオブジェクトを削除した後、そのオブジェクトを解放する必要があります。

共有ボールトの例

#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-->
iOS用API