ios - 如何在 Swift 中使用 AgoraRtcEngineKit 创建 channel 和服务器 token ?

标签 ios swift api token agora.io

我正在关注 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_IDAPP_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中有两个参数,即channeluid , 可以根据需要进行设置,生成唯一的 token 。

关于ios - 如何在 Swift 中使用 AgoraRtcEngineKit 创建 channel 和服务器 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60897903/

相关文章:

api - Android,Iphone,Windows和Blackberry API搜索应用程序

objective-c - 在适用于 iOS 的 Restful 协议(protocol)中推送通知

ios - 如何从字典中获取一个字符串并确保它不为空? ( swift/iOS)

swift - 在 UI 测试中将模拟数据插入核心数据

ios - 删除 UITableView 附件上的背景颜色

api - 无法弄清楚如何查询 Bing/Azure Marketplace API

即使 curl 和浏览器给出连贯的文本,Python 请求库也会给出乱码响应

ios - 直接在应用程序中呈现下载文件的预览

ios - 尝试存储数据时我的代码出错

ios - UIImagePickerController 和 fatal error : array element cannot be bridged to Objective-C