既定フィールド

Kii Cloud SDK は、以下の情報を管理するための既定フィールドを定義しています。

フィールド JSON でのフィールド名 説明
ユーザー ID userID REST API などで使用する文字列形式のユーザー ID です。1234567-89ab-cdef-0123-456789abcdef のような形式です。
内部ユーザー ID internalUserID 内部的に使用している数値のユーザー ID です。
ユーザー名 loginName ログインで使用するユーザー名です。ユーザー名の指定がないとき、フィールドはありません。
メールアドレス emailAddress ログインで使用するメールアドレスです。メールアドレスの指定がないとき、フィールドはありません。
メールアドレスが確認済みかどうか emailAddressVerified ログインで使用するメールアドレスを認証する設定で確認済みのとき true、未確認のとき false です。認証機能を使用しないときは true です。
電話番号 phoneNumber ログインで使用する電話番号です。指定方法によらず、常に国際電話番号の形式で保存されます。電話番号を指定しないとき、フィールドはありません。
電話番号が確認済みかどうか phoneNumberVerified ログインで使用する電話番号を認証する設定で確認済みのとき true、未確認のとき false です。認証機能を使用しないときは true です。
ディスプレイネーム displayName システム的に特に意味は持ちません。モバイルアプリで自由に使用できます。ディスプレイネームを指定しないとき、フィールドはありません。Unicode で 1~50 文字の範囲で入力します。
所在国 country USJPCN などが入ります。値を設定していない場合、フィールドはありません。
電話番号として国内電話番号形式を指定した場合に限り、国際電話番号形式に変換するための情報としても使用されます(JP を設定して電話番号に 09011111111 を指定すると、+819011111111 に自動変換)。逆に、国際電話番号から所在国を自動設定したり、所在国から国際電話番号形式の電話番号を自動修正したりする機能はありません。
ロケール locale ユーザーのロケールです。メールアドレスや電話番号の認証を行う際、ここで設定したロケールのテンプレートが使用されます。

ログイン中のユーザー以外からユーザー属性を取得する場合、"Expose Full User Data to Others" オプションの変更が必要なものがあります。オプション設定によってはユーザー ID、ユーザー名、ディスプレイネームしか取得されません。詳細は、他ユーザーの属性の読み込み を参照してください。

既定フィールドの設定と変更

ユーザーの既定フィールドの設定・変更には KiiIdentityData クラスと KiiUserFields クラスを利用します。KiiIdentityData クラスと KiiUserFields クラスにはそれぞれ以下のフィールドを設定します。

  • KiiIdentityData
    • ユーザー名
    • メールアドレス
    • 電話番号
  • KiiUserFields
    • ディスプレイネーム
    • 所在国
    • ロケール

ユーザー ID はユーザー作成時に自動的に生成されます。変更はできません。

ユーザーの既定フィールドを設定・変更する例を以下に挙げます。

Swift 3:

  • // Set the username, email address, and phone number.
    let builder = KiiIdentityDataBuilder()
    builder.userName = "My_New_Name"
    builder.email = "myNewEmail@example.com"
    builder.phoneNumber = "+15555555555"
    let identityData : KiiIdentityData
    do{
      identityData = try builder.buildWithError()
    
      // Set the display name, country, and locale.
      let userFields = KiiUserFields()
      userFields.displayName = "My_New_Name"
      userFields.country = "JP"
      userFields.locale = LocaleContainer()
    
      // Get the currently logged-in user.
      let user = KiiUser.current()!
    
      // Update the user attributes.
      try user.update(withIdentityDataSynchronous: identityData, userFields: userFields)
    }catch (let retError as NSError){
      // Handle the error.
      return
    }
  • // Set the username, email address, and phone number.
    let builder = KiiIdentityDataBuilder()
    builder.userName = "My_New_Name"
    builder.email = "myNewEmail@example.com"
    builder.phoneNumber = "+15555555555"
    let identityData : KiiIdentityData
    do{
      identityData = try builder.buildWithError()
    }catch (let retError as NSError){
      // Handle the error.
      return
    }
    
    // Set the display name, country, and locale.
    let userFields = KiiUserFields()
    userFields.displayName = "My_New_Name"
    userFields.country = "JP"
    userFields.locale = LocaleContainer()
    
    // Get the currently logged-in user.
    let user = KiiUser.current()!
    
    // Update the user attributes.
    user.update(with: identityData, userFields: userFields) { (retUser :KiiUser?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    }

Objective-C:

  • // Set the username, email address, and phone number.
    KiiIdentityDataBuilder *builder = [[KiiIdentityDataBuilder alloc] init];
    builder.userName = @"My_New_Name";
    builder.email = @"myNewEmail@example.com";
    builder.phoneNumber = @"+15555555555";
    NSError *error = nil;
    KiiIdentityData *identityData = [builder buildWithError:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Set the display name, country, and locale.
    KiiUserFields *userFields = [[KiiUserFields alloc] init];
    [userFields setDisplayName:@"My_New_Name"];
    [userFields setCountry:@"JP"];
    [userFields setLocale: [[LocaleContainer alloc] init]];
    
    // Get the currently logged-in user.
    KiiUser *user = [KiiUser currentUser];
    
    // Update the user attributes.
    [user updateWithIdentityDataSynchronous:identityData userFields:userFields error:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // Set the username, email address, and phone number.
    KiiIdentityDataBuilder *builder = [[KiiIdentityDataBuilder alloc] init];
    builder.userName = @"My_New_Name";
    builder.email = @"myNewEmail@example.com";
    builder.phoneNumber = @"+15555555555";
    NSError *error = nil;
    KiiIdentityData *identityData = [builder buildWithError:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Set the display name, country, and locale.
    KiiUserFields *userFields = [[KiiUserFields alloc] init];
    [userFields setDisplayName:@"My_New_Name"];
    [userFields setCountry:@"JP"];
    [userFields setLocale: [[LocaleContainer alloc] init]];
    
    // Get the currently logged-in user.
    KiiUser *user = [KiiUser currentUser];
    
    // Update the user attributes.
    [user updateWithIdentityData:identityData userFields:userFields block:^(KiiUser *user, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

既存のフィールドを更新対象として指定しない場合、そのフィールドはそのまま Kii Cloud 上に保持されます。

updateWithUserFields:block: メソッドが正常に完了すると、フィールドが Kii Cloud および KiiUser インスタンスで更新されます。

なお、認証がオンの状態でメールアドレスや電話番号を変更した場合は認証処理が実行されます。新たに設定したメールアドレスや電話番号によるログインは、この認証処理が完了するまで有効になりません。詳しくは メールアドレス認証 および 電話番号(SMS)認証 を参照してください。

既定フィールドの参照

ユーザーの既定フィールドを参照する例を以下に挙げます。

Swift 3:

  • // Get the currently logged-in user.
    let user = KiiUser.current()!
    
    do {
      // Refresh the user to get the latest user info from Kii Cloud.
      try user.refreshSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
    
    // Get the user attributes.
    let userName = user.username
    let emailAddress = user.email
    let phoneNumber = user.phoneNumber
    let displayName = user.displayName
    let country = user.country
    let locale = user.locale
  • // Get the currently logged-in user.
    let user = KiiUser.current()!
    
    // Refresh the user to get the latest user info from Kii Cloud.
    user.refresh { (user :KiiUser?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Get the user attributes.
      let userName = user!.username
      let emailAddress = user!.email
      let phoneNumber = user!.phoneNumber
      let displayName = user!.displayName
      let country = user!.country
      let locale = user!.locale
    }

Objective-C:

  • // Get the currently logged-in user.
    KiiUser *user = [KiiUser currentUser];
    
    NSError *error = nil;
    
    // Refresh the user to get the latest user info from Kii Cloud.
    [user refreshSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Get the user attributes.
    NSString *userId = user.userID;
    NSString *userName = user.username;
    NSString *emailAddress = user.email;
    NSString *phoneNumber = user.phoneNumber;
    NSString *displayName = user.displayName;
    NSString *country = user.country;
    LocaleContainer *locale = user.locale;
  • // Get the currently logged-in user.
    KiiUser *user = [KiiUser currentUser];
    
    // Refresh the user to get the latest user info from Kii Cloud.
    [user refreshWithBlock:^(KiiUser *user, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    
      // Get the user attributes.
      NSString *userId = user.userID;
      NSString *userName = user.username;
      NSString *emailAddress = user.email;
      NSString *phoneNumber = user.phoneNumber;
      NSString *displayName = user.displayName;
      NSString *country = user.country;
      LocaleContainer *locale = user.locale;
    }];