Kii Cloud是一个全栈移动后端平台,它为iOS、Android、HTML5和Unity应用开发提供加速。它不仅对那些没有专用SDK平台的开发者非常有用,而且还允许开发者在SDK正式发布之前使用新功能。
以Unity 3D为例,它是Kii平台最近新增的一部分,它正在逐步支持一些最新功能,比如Server Extensions。Server Extensions允许开发者通过部署JavaScript代码来扩展Kii Cloud的功能,创建新的自定义端点。如果API默认不支持某些功能,可以通过扩展来实现。
首先,需要在创建一个应用,按照以下步骤操作:
现在,是时候部署一个Server Extension了。让创建一个简单的回声服务(它会将发送的消息作为参数返回)。创建一个名为echo.js
的文件,内容如下:
function echo(params, context) {
return params.message;
}
注意:函数名“echo”将成为端点名称(见下一节)。
将使用Kii服务器工具来部署它(在查找带有云图标的工具)。从命令行切换到服务器工具目录,执行以下命令(假设选择了美国作为应用的位置):
node bin/kii-servercode.js deploy-file --file echo.js --site us --app-id YOUR_APP_ID --app-key YOUR_APP_KEY --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
完成!服务器扩展已经准备好被调用了。
为了能够与Kii的REST API进行通信,需要能够发送带有适当头部、数据和端点信息的POST HTTP请求。为了做到这一点,将使用Unity 3D的原生类WWW
(因此不需要第三方HTTP类),以及一个额外的类来编码/解码JSON。
WWW
类将帮助使用POST向Kii Cloud API发送HTTP请求。这个请求将需要以下数据:
调用服务器扩展的代码大致如下(假设在上配置应用托管在美国):
public static WWW RunServerExtension(string appId, string appKey, string endpoint, string kii_access_token, string msg)
{
WWWForm form = new WWWForm();
Hashtable headers = form.headers;
headers["Content-Type"] = "application/json";
headers["x-kii-appid"] = appId;
headers["x-kii-appkey"] = appKey;
if (kii_access_token != null)
headers["Authorization"] = "Bearer " + kii_access_token;
form.AddField("message", msg);
Hashtable data = new Hashtable();
data["message"] = msg;
string json = JSON.JsonEncode(data);
Debug.Log("Sending: " + json);
byte[] bytes = Encoding.UTF8.GetBytes(json);
return new WWW("https://api.kii.com/api/apps/" + appId + "/server-code/versions/current/" + endpoint, bytes, headers);
}
注意:该方法需要应用的App Id和App Key,在前面的步骤中已经记录下来了。使用与在扩展中使用的相同方法名作为端点参数(在本例中是“echo”)。
这个调用不会阻塞游戏,因为在Coroutine中运行WWW(执行会等待直到从服务器获得响应)。
如果想尝试这个,可以下载演示项目KiiUnityREST
,并在配置应用密钥后运行Init
场景,使用Kii Game Cloud
顶级编辑器菜单。