Swift 如何使用 AgoraRtcEngineKit 创建频道和服务器令牌?
How do I create a channel and server token using AgoraRtcEngineKit in Swift?
我正在关注 Agora.io channel management guide 加入使用 AgoraRtcEngineKit 的频道 iOS。它声明我应该调用 AgoraRtcEngineKit class 的 createRtcChannel
来创建一个带有频道 ID 的 AgoraRtcChannel
对象。但是,AgoraRtcEngineKit 在Swift 中没有createRtcChannel
方法。另一种方法是我使用 Obj-C 代码,但这似乎有点老套。
其次,在 token generation reference 之后,我需要使用 RtcTokenBuilder 生成服务器令牌。它指出 "your token needs to be generated on your own server, hence you are required to first deploy a token generator on the server." 理想情况下,我可以在 Swift 中生成令牌,但源代码的唯一可用语言是 C++、Java、Python、PHP,Node.js,去,Ruby。我想我可以用 JavaScriptCore 做到这一点,但是,就像通道生成一样,这似乎不是最佳解决方案。
根据文档:
生成令牌(或临时令牌)后,客户端应
使用令牌在 24 小时内加入频道。否则,你需要
生成新令牌(或临时令牌)。
令牌(或临时令牌)在一段时间后过期
时间。当SDK通知客户端token即将上线时
过期或已过期 onTokenPrivilegeWillExpire 或
onTokenExpired回调,需要生成新的token并调用
renewToken 方法。
令牌编码使用标准 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. You need to simply deploy a Heroku Dynamic Key server, which is in the TokenServer-nodeJS. Go to this deployment link 之后弄明白了,并输入了你们各自的 Agora.io APP_ID
和 APP_CERTIFICATE
。部署令牌服务器后,我们可以使用 HTTP get 请求获取令牌作为 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,即channel
和uid
,可以根据需要设置,生成唯一的token。
我正在关注 Agora.io channel management guide 加入使用 AgoraRtcEngineKit 的频道 iOS。它声明我应该调用 AgoraRtcEngineKit class 的 createRtcChannel
来创建一个带有频道 ID 的 AgoraRtcChannel
对象。但是,AgoraRtcEngineKit 在Swift 中没有createRtcChannel
方法。另一种方法是我使用 Obj-C 代码,但这似乎有点老套。
其次,在 token generation reference 之后,我需要使用 RtcTokenBuilder 生成服务器令牌。它指出 "your token needs to be generated on your own server, hence you are required to first deploy a token generator on the server." 理想情况下,我可以在 Swift 中生成令牌,但源代码的唯一可用语言是 C++、Java、Python、PHP,Node.js,去,Ruby。我想我可以用 JavaScriptCore 做到这一点,但是,就像通道生成一样,这似乎不是最佳解决方案。
根据文档:
生成令牌(或临时令牌)后,客户端应 使用令牌在 24 小时内加入频道。否则,你需要 生成新令牌(或临时令牌)。
令牌(或临时令牌)在一段时间后过期 时间。当SDK通知客户端token即将上线时 过期或已过期 onTokenPrivilegeWillExpire 或 onTokenExpired回调,需要生成新的token并调用 renewToken 方法。
令牌编码使用标准 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. You need to simply deploy a Heroku Dynamic Key server, which is in the TokenServer-nodeJS. Go to this deployment link 之后弄明白了,并输入了你们各自的 Agora.io APP_ID
和 APP_CERTIFICATE
。部署令牌服务器后,我们可以使用 HTTP get 请求获取令牌作为 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,即channel
和uid
,可以根据需要设置,生成唯一的token。