如何在Swift中使用AgoraRtcEngineKit创建通道和服务器令牌



我遵循Agora.io频道管理指南,使用适用于iOS的AgoraRtcEngineKit加入频道。它指出我应该调用AgoraRtcEngineKit类的createRtcChannel来创建一个具有通道ID的AgoraRtcChannel对象。然而,AgoraRtcEngineKit在Swift中没有createRtcChannel方法。另一种选择是我使用Obj-C代码,但这似乎有点棘手。

其次,根据令牌生成参考,我需要使用RtcTokenBuilder生成一个服务器令牌。它指出"你的令牌需要在你自己的服务器上生成,因此你需要首先在服务器上部署一个令牌生成器。"理想情况下,我可以用Swift生成令牌,但源代码唯一可用的语言是C++、Java、Python、PHP、Node.js、Go、Ruby。我想我可以用JavaScriptCore来实现这一点,但是,就像通道生成一样,这似乎不是一个最佳的解决方案。

根据文件:

  • 生成令牌(或临时令牌(后,客户端应该使用令牌在24小时内加入频道。否则,您需要以生成新的令牌(或临时令牌(。

  • 代币(或临时代币(在时间当SDK通知客户端令牌即将过期或已由onTokenPrivilegeWillExpire或onTokenExpired回调,您需要生成一个新的令牌并调用renewToken方法。

  • 令牌编码使用标准HMAC/SHA1方法库在常见的服务器端开发平台上可用,例如Node.js、Java、PHP、Python和C++。

通过Agora.io在iOS Swift中使用AgoraRtcEngineKit生成通道和加入通道的令牌的标准方法是什么?

提前感谢!

我最终根据部署动态密钥服务器的指南找到了答案。您只需要简单地部署一个Heroku动态密钥服务器,它位于TokenServer nodeJS中。转到此部署链接并输入您各自的Agora.ioAPP_IDAPP_CERTIFICATE。一旦部署了令牌服务器,我们就可以使用HTTP获取请求以JSON格式获取令牌作为响应,然后可以使用SwiftyJSON等框架对其进行解析。也就是说,一旦服务器运行,您就用实例url替换下面的内容,并使用此端点生成令牌:https://<heroku url>/access_token?channel=test&uid=1234

使用此实例url示例:

let request = AF.request("https://matchr-token.herokuapp.com/access_token?channel=test&uid=1234")
request.responseJSON { (response) in
guard let tokenDict = response.value as! [String : Any]? else { return }
let token = tokenDict["token"] as! String
// use the generated token here
}

该实例url中有两个参数,即channeluid,可以根据需要进行设置以生成唯一的令牌。

最新更新