ios 与 android 不能连麦

项目中ios手机能与ios手机连麦,android手机能与android手机连麦,但是ios手机不能与android手机连麦,可能是哪里有问题呢??

集成的是 Native SDK 还是 Web SDK?
建议先根据 听不到声音 文档进行自查, 若自查后问题仍然存在,请提供以下信息:

  • 用户无法听到声音的频道号
  • 该频道内哪些用户无法听到声音,请提供他们的 UID
  • 用户无法听到声音的时间段

用的native sdk。不是听不到声音,双方都能进入直播间,只是当ios连麦andoid或者android连麦ios的时候连接失败

连接失败是啥意思,两边都加入频道失败?具体现象是什么?

android和ios加入了同一个频道,ios作为主播。android想要跟ios进行一对一通话,但是连接不上。ios和ios能进行一对一通话

请提供以下信息,我们来排查一下:

  • 用户无法听到声音的频道号
  • 该频道内哪些用户无法听到声音,请提供他们的 UID
  • 用户无法听到声音的时间段

如果方便的话,最好能提供安卓和 iOS 的 SDK log
https://docs.agora.io/cn/faq/logfile

问题现象:

​ IOS端和Android端无法在一个公开会议中进行连麦

重现流程:

​ 1、IOS或Android任意一端创建公开会议

​ 2、两者分别以主持人、参与者的身份加入会议

​ 3、两者进入会议之后,此时无论哪一端作为主持者或者参与者皆出现一下现象:

​ Android端可以看见IOS端的影像

​ IOS端无法正常显示Android端的影响

​ 4、发起连麦请求:

​ 1)、IOS端作为主持人向Android端发起连麦请求:

​ Android端无反应,IOS端提示:连接超时

​ 2)、Android端作为主持人向IOS端发起连麦请求:

​ IOS端无反应,Android端提示:连接出错请重试

测试相关信息:

​ 调用这个方法channelSetAttr之后对方没有响应,onChannelAttrUpdated这个回调没调用

提供 RTC SDK log。

你们是还在使用老信令吗? Agora Signaling SDK 会逐步停止维护,后续将不再修复 SDK 故障,最终会停止服务。请尽快升级到 Agora RTM SDK。

请参考信令维护计划及兼容性说明:
https://docs.agora.io/cn/Real-time-Messaging/signaling_sunset?platform=All%20Platforms

可参考 “升级到 RTM” 文档,帮助你更快速的迁移到 Agora RTM SDK:
https://docs.agora.io/cn/Real-time-Messaging/rtm_signaling_android?platform=Android

附上信令 SDK 维护计划:

  • 2019 年 8 月 1 日起: 信令进入维护状态,只进行故障修复,不会增添新功能。信令文档和下载链接将于 2019 年 8 月 12 日被迁移到这里
  • 2019 年 12 月 31 日起:信令停止维护, 不再修复SDK 故障, 服务端只提供日常最低限度维护以保障信令 SDK 仍然可用。
  • 2020 年 6 月 30 日起:信令停止服务,关停信令服务器。

agorasdk.zip (58.4 KB)

mobile_expostor.zip (6.2 KB)

您好,我想再问一下:appstore上下载的那一版是没有这个问题的,是可以相互连麦的,这个是因为什么呢

安卓端用户 mute 了本地视频,ClientRole 设为了观众。
image

另外,从后台看到你们使用的 SDK 版本是 2.3.1,这个版本已经比较老了,如果条件允许的话,建议尽快升级到官网最新版本。

应该是你的集成逻辑有问题,建议参考 Demo 的 API 调用时序:
安卓:https://download.agora.io/sdk/release/Agora_Native_SDK_for_Android_v2_9_2_FULL.zip
iOS:https://download.agora.io/sdk/release/Agora_Native_SDK_for_iOS_v2_9_1_FULL.zip

您好:

​ 这是ios的连麦方式:

self.agoraSignalKit?.messageInstantSend(self.meetingJoinModel?.hostUser?.clientUid, uid: 0, msg: jsonString, msgID: "")

​ 这是Android的连麦方式:

agoraAPI.messageInstantSend("" + audience.getUid(), 0, jsonObject.toString(), "" + audience.getUid());

这两个方法不一样会影响到ios和Android之间的连麦吗?

你们是自己通过老信令的发送消息功能来实现呼叫邀请的啊?
1、正如上面所述,老信令目前已经停止维护了,请尽快升级到 RTM,建议直接通过呼叫邀请相关 API 实现呼叫邀请:
https://docs.agora.io/cn/Real-time-Messaging/API%20Reference/RTM_java/index.html#callinvitation
2、iOS 的是 “hostUser”,Android 的是 “audience”,不清楚你们是怎么定义这个属性的?
3、上面已经说了,安卓端的用户角色是观众,这个需要确认一下 RTC SDK 的 setClientRole 方法中设置的 role 是什么?需要设置为 CLIENT_ROLE_BROADCASTER 才可以发送音视频流。
https://docs.agora.io/cn/Interactive%20Broadcast/API%20Reference/java/classio_1_1agora_1_1rtc_1_1_rtc_engine.html#aa2affa28a23d44d18b6889fba03f47ec

您好刚才ios的方法贴错了:

​ 这是ios的连麦方式:

self.agoraSignalKit?.channelSetAttr(self.meetingJoinModel?.meeting?.id, name: HEChannelAttrName.callingAudience.rawValue, value: String(model.uid ?? 0))

​ 这是Android的连麦方式:

agoraAPI.messageInstantSend("" + audience.getUid(), 0, jsonObject.toString(), "" + audience.getUid());

还是需要确认这两个方法不一样会影响到ios和Android之间的连麦嘛?

现在暂时无法更新信令,只能用老信令,还有其他的解决方式吗

从你提供的日志来看,这应该和信令没什么关系,ios 和 android 都加入 rtc 频道成功了,但是 android 是观众角色,所以 ios 才看不到他。
请你自己检查一下你的业务逻辑, Android RTC SDK 的 setClientRole 方法中设置的 role 是什么?需要设置为 CLIENT_ROLE_BROADCASTER 才可以发送音视频流。