iOS からの実行

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

Swift:

  • // Instantiate the endpoint.
    let entry = Kii.serverCodeEntry("main")
    
    // Set parameters.
    let argDict = ["username":"name_of_my_friend","password":"password_for_my_friend"]
    
    // Create a container of the parameters.
    let argument = KiiServerCodeEntryArgument(dictionary:argDict)
    
    let result : KiiServerCodeExecResult
    
    do{
      // Execute the server code.
      result = try entry.executeSynchronous(argument)
    }catch(let error as NSError){
      // Handle the error.
      return
    }
    // Parse the result.
    let returnedDict = result.returnedValue()
    let newUser = returnedDict?["returnedValue"];
    
    // Get the number of the exectued steps.
    let execSteps : Int = result.executedSteps()
    
    // Get the version of Node.js on which the server code was executed.
    let executedVersion = result.environmentVersion()
  • // Instantiate the endpoint.
    let entry = Kii.serverCodeEntry("main")
    
    // Set parameters.
    let argDict = ["username":"name_of_my_friend","password":"password_for_my_friend"]
    
    // Create a container of the parameters.
    let argument = KiiServerCodeEntryArgument(dictionary:argDict)
    
    // Execute the server code.
    entry.execute(argument) { (retEntry : KiiServerCodeEntry, retArg : KiiServerCodeEntryArgument?, result : KiiServerCodeExecResult?, error : Error?) in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Parse the result.
      let returnedDict = result?.returnedValue()
      let newUser = returnedDict?["returnedValue"];
    
      // Get the number of the exectued steps.
      let execSteps : Int = result!.executedSteps()
    
      // Get the version of Node.js on which the server code was executed.
      let executedVersion = result.environmentVersion()
    }

Objective-C:

  • // Instantiate the endpoint.
    KiiServerCodeEntry* entry =[Kii serverCodeEntry:@"main"];
    
    // Set parameters.
    NSDictionary* argDict= [NSDictionary dictionaryWithObjectsAndKeys:
                             @"name_of_my_friend", @"username",
                             @"password_for_my_friend", @"password", nil];
    
    // Create a container of the parameters.
    KiiServerCodeEntryArgument* argument= [KiiServerCodeEntryArgument argumentWithDictionary:argDict];
    
    // Execute the server code.
    NSError* error = nil;
    KiiServerCodeExecResult* result = [entry executeSynchronous:argument
                                                      withError:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Parse the result.
    NSDictionary *returnedDict = [result returnedValue];
    NSString *newUser = [returnedDict objectForKey:@"returnedValue"];
    
    // Get the number of the exectued steps.
    int execSteps = (int)[result executedSteps];
    
    // Get the version of Node.js on which the server code was executed.
    KiiServerCodeEnvironmentVersion executedVersion = [result environmentVersion];
  • // Instantiate the endpoint.
    KiiServerCodeEntry* entry =[Kii serverCodeEntry:@"main"];
    
    // Set parameters.
    NSDictionary* argDict= [NSDictionary dictionaryWithObjectsAndKeys:
                             @"name_of_my_friend", @"username",
                             @"password_for_my_friend", @"password", nil];
    
    // Create a container of the parameters.
    KiiServerCodeEntryArgument* argument= [KiiServerCodeEntryArgument argumentWithDictionary:argDict];
    
    // Execute the server code.
    NSError* error = nil;
    [entry execute:argument
         withBlock:^(KiiServerCodeEntry *entry, KiiServerCodeEntryArgument *argument, KiiServerCodeExecResult *result, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    
      // Parse the result.
      NSDictionary *returnedDict = [result returnedValue];
      NSString *newUser = [returnedDict objectForKey:@"returnedValue"];
    
      // Get the number of the exectued steps.
      int execSteps = (int)[result executedSteps];
    
      // Get the version of Node.js on which the server code was executed.
      KiiServerCodeEnvironmentVersion executedVersion = [result environmentVersion];
    }];

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

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

returnedValue() メソッドは、戻り値の型 で例示したような、Server Code を実行した結果が "returnedValue" フィールドに格納された NSDictionary を返します。実際の結果を抽出するには、適切なメソッドを実行してください。

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