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 は タイムアウト をご参照ください。