使用Unity 3D调用Kii Cloud的REST API

Kii Cloud是一个全栈移动后端平台,它为iOS、Android、HTML5和Unity应用开发提供加速。它不仅对那些没有专用SDK平台的开发者非常有用,而且还允许开发者在SDK正式发布之前使用新功能。

以Unity 3D为例,它是Kii平台最近新增的一部分,它正在逐步支持一些最新功能,比如Server Extensions。Server Extensions允许开发者通过部署JavaScript代码来扩展Kii Cloud的功能,创建新的自定义端点。如果API默认不支持某些功能,可以通过扩展来实现。

部署Server Extensions

首先,需要在创建一个应用,按照以下步骤操作:

  1. 创建一个账户。
  2. 创建一个应用,按照“”中的步骤1、2和3操作(忽略其他部分)。
  3. 记录应用分配到的App Id、App Key、Client Id和Client Secret,按照“”中的步骤4操作(忽略其他部分)。

现在,是时候部署一个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

完成!服务器扩展已经准备好被调用了。

调用Server Extensions

为了能够与Kii的REST API进行通信,需要能够发送带有适当头部、数据和端点信息的POST HTTP请求。为了做到这一点,将使用Unity 3D的原生类WWW(因此不需要第三方HTTP类),以及一个额外的类来编码/解码JSON。

WWW类将帮助使用POST向Kii Cloud API发送HTTP请求。这个请求将需要以下数据:

  • Kii App Id和App Key(当在创建应用时获得)
  • 自定义端点名称(创建的JS方法的名称),以便调用正确的服务器扩展(可以有多个方法执行不同的操作)
  • JSON数据(如果服务器扩展使用参数作为输入)
  • (可选)Kii用户认证令牌(一个token),如果想以认证用户的身份而不是匿名用户运行服务器扩展(可以在Kii Cloud中使用用户登录后获得这个token)

调用服务器扩展的代码大致如下(假设在上配置应用托管在美国):

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顶级编辑器菜单。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485