获取主被叫用户信息

更新时间: 2023/08/08 09:57:18

在报表统计等场景中,您可能需要上报主被叫的一些用户信息。本文介绍获取主被叫的用户 ID(uid)、房间 ID (cid)、房间名称(cname)等信息。

呼叫时透传扩展信息给被叫

您可以在发起呼叫时设置扩展信息,例如用户昵称等。

  1. 调用 call 接口发起呼叫时,在 attachment 参数中设置扩展信息,发起呼叫的详情参数参考如下:
/// 开始呼叫
/// @param userID 呼叫的用户ID
/// @param type 通话类型 {@link NERtcCallKitConsts =>  NERtcCallType}
/// @param attachment 扩展信息,透传到onInvited
/// @param extra 全局抄送
/// @param token  安全模式token,如果用户直接传入,不需要实现  tokenHandler  block回调
/// @param channelName  自定义channelName,不传会默认生成
/// @param completion 回调
- (void)call:(NSString *)userID
          type:(NERtcCallType)type
    attachment:(nullable NSString *)attachment
    globalExtra:(nullable NSString *)extra
      withToken:(nullable NSString *)token
    channelName:(nullable NSString *)channelName
    completion:(nullable void (^)(NSError *_Nullable error))completion;
  1. 被叫用户获取相应的扩展信息。

    被叫用户在收到来电通知时,通过 NERtcCallKitDelegate#onInvited 回调中的 attachment 参数获取主叫方透传的扩展信息。

    /// 收到邀请的回调
    /// @param invitor 邀请方
    /// @param userIDs 房间中的被邀请的所有人(不包含邀请者)
    /// @param isFromGroup 是否是群组
    /// @param groupID 群组ID
    /// @param type 通话类型
    - (void)onInvited:(NSString *)invitor
              userIDs:(NSArray<NSString *> *)userIDs
          isFromGroup:(BOOL)isFromGroup
              groupID:(nullable NSString *)groupID
                type:(NERtcCallType)type
          attachment:(nullable NSString *)attachment;
    

获取本端的用户信息

主叫和被叫在加入 RTC 房间成功后,会触发NERtcCallKitDelegate#onJoinChannel回调,您可以在NERtcCallKitDelegate#onJoinChannel 回调中获取本端的 RTC 用户 ID(uid)、IM 用户 ID (accid)、RTC 房间 ID(cid)、RTC 房间名称(cname)。

NERtcCallKitDelegate#onJoinChannel 回调的接口模型如下:

/// 自己加入成功的回调,通常用来上报、统计等
/// @param event 回调参数
- (void)onJoinChannel:(NERtcCallKitJoinChannelEvent *)event;
 
@interface NERtcCallKitJoinChannelEvent : NSObject

/// IM userID
@property(nonatomic, copy) NSString *accid;

/// 音视频用户id
@property(nonatomic, assign) uint64_t uid;

/// 音视频channelId
@property(nonatomic, assign) uint64_t cid;

/// 音视频channelName
@property(nonatomic, copy) NSString *cname;

@end

请在收到 onJoinChannel 回调时,自行保存这些信息。

获取对端的用户信息

获取对端用户的 IM accid

被叫收到呼叫邀请时会触发NERtcCallKitDelegate#onInvited回调,在该回调的 invitor 参数中会返回对端用户的 IM accid。

NERtcCallKitDelegate#onInvited 回调的接口模型如下:

/// 收到邀请的回调
/// @param invitor 邀请方
/// @param userIDs 房间中的被邀请的所有人(不包含邀请者)
/// @param isFromGroup 是否是群组
/// @param groupID 群组ID
/// @param type 通话类型
- (void)onInvited:(NSString *)invitor
          userIDs:(NSArray<NSString *> *)userIDs
      isFromGroup:(BOOL)isFromGroup
          groupID:(nullable NSString *)groupID
             type:(NERtcCallType)type
       attachment:(nullable NSString *)attachment;

获取对端用户的 RTC Uid

主叫在调用 call 接口成功后,在通话过程中,您可以调用 memberOfAccid 接口,根据对端用户的 IM accid 获取对端用户的 uid。

根据 IM accid 获取用户的 uid 的接口如下:

/// @param accid  IM 用户id
/// @discussion 只有在通话中才能通过accid获取获取uid
- (void)memberOfAccid:(NSString *)accid
           completion:(nullable void (^)(NIMSignalingMemberInfo *_Nullable info))completion;
此文档是否对你有帮助?
有帮助
去反馈
  • 呼叫时透传扩展信息给被叫
  • 获取本端的用户信息
  • 获取对端的用户信息
  • 获取对端用户的 IM accid
  • 获取对端用户的 RTC Uid