カスタムフィールド

開発者は、既定フィールドに加え、任意のフィールド(年齢、性別、誕生日等)を追加できます。ただし、SDK により予約されているフィールド名は使用できません。予約されているフィールド名については Javadoc を参照してください。

カスタムフィールドは UserFields インスタンスに設定してください。

カスタムフィールドの設定と変更

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

  • try {
      // Set custom fields.
      UserFields userFields = new UserFields();
      userFields.set("age", 20);
      userFields.set("gender", "male");
      userFields.set("height", 170.5);
      userFields.set("isMember", true);
    
      // Remove custom fields.
      userFields.removeFromServer("weight");
      userFields.removeFromServer("chest");
    
      // Get the currently logged-in user.
      KiiUser user = KiiUser.getCurrentUser();
    
      // Update the user attributes.
      user.update(null, userFields);
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Set custom fields.
    UserFields userFields = new UserFields();
    userFields.set("age", 20);
    userFields.set("gender", "male");
    userFields.set("height", 170.5);
    userFields.set("isMember", true);
    
    // Remove custom fields.
    userFields.removeFromServer("weight");
    userFields.removeFromServer("chest");
    
    // Get the currently logged-in user.
    KiiUser user = KiiUser.getCurrentUser();
    
    // Update the user attributes.
    user.update(null, userFields, new KiiUserUpdateCallback() {
      @Override
      public void onUpdateCompleted(KiiUser kiiUser, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
      }
    });

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

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

また既定フィールドとカスタムフィールドの設定・変更は同時に行えます。

ユーザー属性の変更は、基本的にログイン中のユーザー本人に対してのみ実行できます。詳しくは ユーザー属性 をご覧ください。

注意:KiiUser#update()KiiUser#update(KiiUserCallBack) は deprecated になりました。今後は KiiUser#update(IdentityData, UserFields) または KiiUser#update(IdentityData, UserFields, KiiUserUpdateCallback) を利用してください。

カスタムフィールドの参照

ユーザーのカスタムフィールドを取得する例を以下に挙げます。取得する値のデータ型に合った getter メソッドを実行します。詳細については Javadoc を参照してください。

  • // Get the currently logged-in user.
    KiiUser user = KiiUser.getCurrentUser();
    
    try {
      // Refresh the user to get the latest user info from Kii Cloud.
      user.refresh();
    
      // Get custom fields.
      int age = user.getInt("age");
      String gender = user.getString("gender");
      double height = user.getDouble("height");
      boolean isMember = user.getBoolean("isMember");
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Get the currently logged-in user.
    KiiUser user = KiiUser.getCurrentUser();
    
    // Refresh the user to get the latest user info from Kii Cloud.
    user.refresh(new KiiUserCallBack() {
      @Override
      public void onRefreshCompleted(int token, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        // Get custom fields.
        int age = user.getInt("age");
        String gender = user.getString("gender");
        double height = user.getDouble("height");
        boolean isMember = user.getBoolean("isMember");
      }
    });

また、次の例のように keySet メソッドを実行することで、設定済みのカスタムフィールド一覧が取得できます。

  • // Get the currently logged-in user.
    KiiUser user = KiiUser.getCurrentUser();
    
    try {
      // Refresh the user to get the latest user info from Kii Cloud.
      user.refresh();
    
      // Get a set of custom field keys.
      HashSet<String> keyset = user.keySet();
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Get the currently logged-in user.
    KiiUser user = KiiUser.getCurrentUser();
    
    // Refresh the user to get the latest user info from Kii Cloud.
    user.refresh(new KiiUserCallBack() {
      @Override
      public void onRefreshCompleted(int token, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        // Get a set of custom field keys.
        HashSet<String> keyset = user.keySet();
      }
    });

ユーザー作成時のカスタムフィールドの設定

ユーザーの作成を行うタイミングで、カスタムフィールドの初期値を設定する例を以下に挙げます。

KiiUser のインスタンスを生成した後に set メソッドを使って、カスタムフィールドを設定することができます。

  • // Create a user.
    KiiUser.Builder builder = KiiUser.builderWithName("user_123456");
    builder.setEmail("user_123456@example.com");
    builder.setGlobalPhone("+819012345678");
    KiiUser user = builder.build();
    
    // Set custom fields.
    user.set("age", 30);
    user.set("score", 0);
    
    try {
      // Register the user.
      user.register("123ABC");
    } catch (AppException e) {
      // Handle the error.
    } catch (IOException e) {
      // Handle the error.
    }
  • // Create a user.
    KiiUser.Builder builder = KiiUser.builderWithName("user_123456");
    builder.setEmail("user_123456@example.com");
    builder.setGlobalPhone("+819012345678");
    KiiUser user = builder.build();
    
    // Set custom fields.
    user.set("age", 30);
    user.set("score", 0);
    
    // Register the user.
    user.register(new KiiUserCallBack() {
      @Override
      public void onRegisterCompleted(int token, KiiUser user, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
      }
    }, "123ABC");