日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gensee SDK RoleType详解

發布時間:2025/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gensee SDK RoleType详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • RoleType
    • 使用場景:
    • 方法與使用說明
    • 源碼

RoleType

接著之前的 UserInfo,對RoleType做進一步說明.
此類是SDK的公共類,可以在任一SDK使用方進行調用,之前有提到role是一個“復合”的值1,所以不能簡單的用“==” 來判斷,為了方便,給使用者提供一個工具類來調用。

使用場景:

  • 直播聊天消息的角色判斷
  • 點播聊天消息的角色判斷
  • 其他有role的判斷的地方
  • 實際上UserInfo也是調用RoleType的函數并返回給調用者,例如userInfo.isHost()。

    方法與使用說明

    具有的函數都返回boolean值,參數都是int型的值(role)都是靜態方法:

  • isHost(int role) //老師、組織者
  • isPresentor(int role) //主講
  • isPanelist(int role) //助教、嘉賓
  • isAttendee(int role)客戶端學生,電腦客戶端或rtsdk加入的用戶
  • isAttendeeWeb(int role) web端學生,web、小程序或player sdk加入的用戶
  • 使用的時候,如果只判斷是否為其中一種角色,那么直接調用其中一個函數就可以。
    如果是分別判斷的話,請按順序依次判斷,例如:

    if (RoleType.isHost(role)) {//todo 老師、組織者} else if (RoleType.isPresentor(role)) {//todo 主講} else if (RoleType.isPanelist(role)) {//todo 助教 嘉賓} else if (RoleType.isAttendee(role)) {//todo 客戶端學生} else if (RoleType.isAttendeeWeb(role)) {//todo web端學生}

    主要原因是復合,例如7代表老師或組織者,但老師或組織者的角色實際上是1,是因為:
    7 = 1|2|4,該用戶同時具有老師、主講、助教的身份,最高身份是老師,所以說7代表老師。
    再這種一個位表示一種身份的情況下,可以簡單理解為7=1+2+4。

    源碼

    public static final int ROLE_HOST = 0x01;//組織者、老師public static final int ROLE_PRESENT = 0x02;//主講public static final int ROLE_PANELIST = 0x04;//嘉賓、助教public static final int ROLE_ATTENDEE = 0x08;//客戶端學生public static final int ROLE_ATTENDEE_WEB = 0x10;//web端學生public static final int ROLE_LOD = 0x20;//插播,app幾乎用不上public static boolean isHost(int role) {return (role & RoleType.ROLE_HOST) == RoleType.ROLE_HOST;}public static boolean isPresentor(int role) {return (role & RoleType.ROLE_PRESENT) == RoleType.ROLE_PRESENT;}public static boolean isPanelist(int role) {return (role & RoleType.ROLE_PANELIST) == RoleType.ROLE_PANELIST;}public static boolean isAttendee(int role) {return (role & RoleType.ROLE_ATTENDEE) == RoleType.ROLE_ATTENDEE;}public static boolean isAttendeeWeb(int role) {return (role & RoleType.ROLE_ATTENDEE_WEB) == RoleType.ROLE_ATTENDEE_WEB;}public static boolean isLodUser(int role) {return (role & RoleType.ROLE_LOD) == RoleType.ROLE_LOD;}public static boolean isMiniClassTeacher(int role){return isHost(role) || isPresentor(role) || isPanelist(role);}/*** otherUserRole 是否比role的角色(權限高)* @param otherUserRole* @param role* @return*/public static boolean isRoleGreater(int otherUserRole,int role) {for (int i = 0; i < 3; i++) // 比到第二位,嘉賓位, 0:組織者,1 主講{int nMe = (role >> i) & 0x01;int nOther = (otherUserRole >> i) & 0x01;if (nMe != nOther) {return nMe > nOther;}}return false;}

    關于位運算,后面會介紹。


  • role 在系統中是用位來表示的,一個角色可能包含多個位,多個身份,函數中實現是做位運算。 ??

  • 總結

    以上是生活随笔為你收集整理的Gensee SDK RoleType详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。