Android からの実行

Android SDK より Server Code を実行する例を以下に挙げます。

  • // Instantiate the endpoint.
    KiiServerCodeEntry entry = Kii.serverCodeEntry("main");
    
    try {
      // Set parameters.
      JSONObject rawArg = new JSONObject();
      rawArg.put("username", "name_of_my_friend");
      rawArg.put("password", "password_for_my_friend");
    
      // Create a container of the parameters.
      KiiServerCodeEntryArgument arg = KiiServerCodeEntryArgument
          .newArgument(rawArg);
    
      // Execute the server code.
      KiiServerCodeExecResult res = entry.execute(arg);
    
      // Parse the result.
      JSONObject returned = res.getReturnedValue();
      String newUser = returned.getString("returnedValue");
    
      // Get the number of the executed steps.
      int steps = res.getExecutedSteps();
    
      // Get the version of Node.js on which the server code was executed.
      KiiServerCodeEnvironmentVersion executedVersion = res.getEnvironmentVersion();
    
    } catch (AppException e) {
      // Handle the error.
    } catch (IOException e) {
      // Handle the error.
    } catch (JSONException e) {
      // Handle the error.
    }
  • // Instantiate the endpoint.
    KiiServerCodeEntry entry = Kii.serverCodeEntry("main");
    
    // Set parameters.
    JSONObject rawArg = new JSONObject();
    try {
      rawArg.put("username", "name_of_my_friend2");
      rawArg.put("password", "password_for_my_friend");
    } catch (JSONException e) {
      // Handle the error.
    }
    
    // Create a container of the parameters.
    KiiServerCodeEntryArgument arg = KiiServerCodeEntryArgument
        .newArgument(rawArg);
    
    // Execute the server code.
    entry.execute(arg, new KiiServerCodeEntryCallback() {
      public void onExceuted(KiiServerCodeEntry entry, KiiServerCodeEntryArgument argument,
                             KiiServerCodeExecResult res, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
    
        try {
          // Parse the result.
          JSONObject returned = res.getReturnedValue();
          String newUser = returned.getString("returnedValue");
    
          // Get the number of the executed steps.
          int steps = res.getExecutedSteps();
    
          // Get the version of Node.js on which the server code was executed.
          KiiServerCodeEnvironmentVersion executedVersion = res.getEnvironmentVersion();
        } catch (JSONException e) {
          // Handle the error.
        }
      }
    });

ここでは以下の処理が行われています。

  • 実行対象エンドポイント名(関数名)を指定して serverCodeEntry() メソッドを実行し、KiiServerCodeEntry インスタンスを作成。KiiServerCodeEnvironmentVersion 引数を指定して、Server Code の実行に使用する JavaScript エンジンを指定することもできます。
  • 実行時パラメータ(今回の例ではユーザー名とパスワード)を JSON オブジェクトに格納し、これを指定して newArgument() メソッドを実行し、KiiServerCodeEntryArgument インスタンスを作成。この際、実行時パラメータのキーを Server Code 内のキーと一致させてください(今回の例では "username" と "password")。
  • 実行時パラメータを指定して execute() メソッドを実行し、Server Code を実行。
    • ユーザーがログインしている場合、Kii Cloud はこのユーザーにより Server Code が実行されたものと見なします。
    • ユーザーがログインしていない場合、Kii Cloud は匿名ユーザーにより Server Code が実行されたものと見なします。
  • getReturnedValue() メソッドを実行して、実行結果を取得。
  • (必要に応じて)getExecutedSteps() メソッドを実行して、実行ステップ数を取得。
  • (必要に応じて)getEnvironmentVersion() メソッドを実行して、Node.js のバージョンを取得。

getReturnedValue() メソッドは、戻り値の型 で例示したような、Server Code を実行した結果が "returnedValue" フィールドに格納された JSON オブジェクトを返します。実際の結果を抽出するには、適切なメソッドを実行してください。今回の例の場合は getString() メソッドを使い、新規に作成されたユーザー名の取得を行っています。

タイムアウト時に返却する値を設定した場合、同様に getReturnedValue() メソッドを使って値を取得します。メソッドで取得可能な JSON オブジェクトは タイムアウト をご参照ください。