我正在关注 Agora.io channel management guide使用 AgoraRtcEngineKit for iOS 加入 channel 。它声明我应该调用 AgoraRtcEngineKit 类的 createRtcChannel
来创建一个带有 channel ID 的 AgoraRtcChannel
对象。但是,AgoraRtcEngineKit 在 Swift 中没有 createRtcChannel
方法。另一种方法是我使用 Obj-C 代码,但这似乎有点老套。
其次,继token generation reference之后,我需要使用 RtcTokenBuilder 生成服务器 token 。它指出“您的 token 需要在您自己的服务器上生成,因此您需要首先在服务器上部署一个 token 生成器。”理想情况下,我能够在 Swift 中生成 token ,但源代码的唯一可用语言是 C++、Java、Python、PHP、Node.js、Go、Ruby。我想我可以用 JavaScriptCore 做到这一点,但是,就像 channel 生成一样,这似乎不是最佳解决方案。
根据文档:
生成 token (或临时 token )后,客户端应 使用 token 在 24 小时内加入 channel 。否则,你需要 生成新 token (或临时 token )。
token (或临时 token )在一段时间后过期 时间。当SDK通知客户端token即将上线时 过期或已过期 onTokenPrivilegeWillExpire 或 onTokenExpired回调,需要生成新的token并调用 renewToken 方法。
token 编码使用标准的 HMAC/SHA1 方法和 库在常见的服务器端开发平台上可用, 例如 Node.js、Java、PHP、Python 和 C++。
What is the standard way to generate a channel and token to join channel using AgoraRtcEngineKit in iOS Swift via Agora.io?
提前致谢!
最佳答案
我最终在 this guide on deploying a Dynamic Key Server 之后弄明白了.您只需部署一个 Heroku Dynamic Key 服务器,它位于 TokenServer-nodeJS 中。转到此部署 link并输入你各自的 Agora.io APP_ID
和 APP_CERTIFICATE
.部署 token 服务器后,我们可以使用 HTTP get 请求获取 token 作为 JSON 格式的响应,然后您可以使用 SwiftyJSON 等框架进行解析。即,一旦服务器运行,您将下面的内容替换为您的实例 url 并使用此端点生成 token :
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中有两个参数,即channel
和 uid
, 可以根据需要进行设置,生成唯一的 token 。
关于ios - 如何在 Swift 中使用 AgoraRtcEngineKit 创建 channel 和服务器 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60897903/