1

WebSDK 不接收来自 iOS SDK 的发布流

目前,我已经完成了基于 WebSDK 的视频通话。User1 加入 chatX 并发布他的流。User2 通过 chatX 中的“stream-added”事件接收到这个流并成功订阅它。但是当 user1 从 iOS 应用程序加入视频聊天时,“添加流”事件不会触发。

        client.on('stream-added', function (evt) {
            var stream = evt.stream;
            console.log("New stream added: " + stream.getId());
            console.log("Subscribe ", stream);
            client.subscribe(stream, function (err) {
                console.log("Subscribe stream failed", err);
            });
        });

        client.on('stream-subscribed', function (evt) {
            var stream = evt.stream;
            console.log("Subscribe remote stream successfully: " + stream.getId());
            if ($('#videochat-remoteVideo #agora_remote'+stream.getId()).length === 0) {
                $('#videochat-remoteVideo').append('<div id="agora_remote'+stream.getId()+'"></div>');
            }
            remoteBigLocalSmall();
            stream.play('agora_remote' + stream.getId());
        });

iOS 应用程序接收从 Web 发布的流,而 Web 客户端不接收来自 iOS 客户端的流。

我的实施可能有什么问题?如何从 iOS 客户端接收流?

UPD:加入聊天代码:

user_id = '111';
client.join(channel_key, videochat_id, user_id, function(uid) {
...

我已将 user_id 类型从 string 更改为 int,现在它可以工作了。我不明白为什么,因为文档允许字符串 uid:

join(tokenOrKey: string | null, channel: string, uid: number | string | null, onSuccess?: function, onFailure?: function): void

4

2 回答 2

1

您面临的问题与您使用了错误的 API 方法有关。joinChannelByToken当您应该使用它时,您正在使用它只适用于整数值,joinChannel(byUserAccount: ...)因为它需要一个字符串uid作为参数。

let myStringId = "someStringId"
agoraKit.joinChannel(byUserAccount: myStringId, token: nil, channelId: "demoChannel1") { (sid, uid, elapsed) in
    // Did join channel "demoChannel1"
}
于 2019-07-29T21:46:35.270 回答
0

将 client.join 方法参数 uid 从字符串更改为整数解决了该问题

于 2019-07-18T02:05:46.163 回答