標籤:即時通訊 好友名單 音視頻解決方案 移動視頻開發 音視頻sdk開發包
在IM通訊中,通常需要管理自己的小夥伴,經常聯絡的,重要的使用者需要標識在同一使用者列表裡,方便自己快速聯絡以及查看社交動向更新。那麼如何可以做到類似QQ的好友名單功能呢,如
大廳好友方案套件括:
1、商務服務器可以設定使用者的好友名單,用戶端可以獲得好友名單,不需要進入房間;
2、用戶端可以獲得好友上線、下線的狀態通知;
3、商務服務器可以自訂設定使用者的任意屬性(如名稱、簽名、性別、備忘等)並能同步到用戶端,用戶端可以擷取商務服務器自訂的使用者屬性;
下面以一款在市面(佰銳上科技)功能強大的SDK為例做功能實現說明,
用戶端API介面:
1. #define WM_GV_USERINFOUPDATE WM_GV + 16 ///<使用者資訊更新通知,wParam(INT)表示使用者ID號,lParam(INT)表示更新類別
2. #define WM_GV_FRIENDSTATUS WM_GV + 17 ///<好友線上狀態變化,wParam(INT)表示好友使用者ID號,lParam(INT)表示使用者的當前活動狀態:0離線, 1 上線
3.
4. //擷取使用者好友ID列表
5. BRAC_API DWORD BRAC_GetUserFriends(LPDWORD lpUserIDArray, DWORD&dwUserNum);
6. //擷取好友線上狀態
7. BRAC_API DWORD BRAC_GetFriendStatus(DWORD dwFriendUserId, DWORD&dwStatus);
8. //擷取使用者分組ID列表
9. BRAC_API DWORD BRAC_GetUserGroups(LPDWORD lpGroupIDArray, DWORD&dwGroupNum);
10. //擷取分組下面的好友名單
11. BRAC_API DWORDBRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD&dwUserNum);
12. //擷取使用者資訊
13. BRAC_API DWORDBRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORDdwLen);
14. //擷取使用者分組名稱
15. BRAC_API DWORD BRAC_GetGroupName(DWORDdwGroupId, TCHAR* lpGroupName, DWORD dwLen);
伺服器端的API介面:
1. //使用者資訊控制類型定義(API:BRAS_UserInfoControl傳入參數、OnUserInfoControl回調參數)
2. #define BRAS_USERINFO_CTRLCODE_KICKOUT 1 ///<將指定使用者從系統中踢掉
3. #define BRAS_USERINFO_CTRLCODE_SYNCDATA 2 ///<將指定使用者的資料同步給用戶端
4.
5. #define BRAS_USERINFO_CTRLCODE_ADDGROUP 20 ///<添加使用者分組,wParam為分組Id,lpStrValue為分組名稱
6. #define BRAS_USERINFO_CTRLCODE_DELGROUP 21 ///<刪除使用者分組,wParam為分組Id
7. #define BRAS_USERINFO_CTRLCODE_ADDFRIEND 22 ///<添加使用者好友,wParam為好友Id
8. #define BRAS_USERINFO_CTRLCODE_DELFRIEND 23 ///<刪除使用者好友,wParam為好友Id
9. #define BRAS_USERINFO_CTRLCODE_SETGROUPRELATION 24 ///<設定好友與分組的關聯關係,wParam為分組Id,lParam為好友Id,表示好友屬於某個分組
10.
11.
12. //設定使用者的詳細資料
13. BRAS_API DWORDBRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORDdwFlags=0);
14. //擷取使用者的詳細資料
15. BRAS_API DWORDBRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORDdwSize);
16. //使用者資訊控制
17. BRAS_API DWORD BRAS_UserInfoControl(DWORDdwUserId, DWORD dwCtrlCode, DWORD wParam=0, DWORD lParam=0, LPCTSTRlpStrValue=NULL);
伺服器端商務邏輯處理流程
在使用者登入成功事件中設定使用者的好友名單、分組列表、使用者屬性,並發送資料同步指令: 1. //使用者登入成功回呼函數定義 2. typedef void (CALLBACK* BRAS_OnUserLoginAction_CallBack)(DWORD dwUserId, LPCTSTR szUserName, DWORD dwLevel, LPCTSTR szIpAddr, LPVOID lpUserValue); 複製代碼 一、添加使用者分組 1. DWORD dwGroupId = 1; 2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP, dwGroupId, 0, "我的好友"); 3. dwGroupId = 2; 4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP, dwGroupId, 0, "公司同事"); 複製代碼 二、添加使用者好友 1. DWORD dwFriendUserId = 10010; 2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND, dwFriendUserId); 3. dwFriendUserId = 10011; 4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND, dwFriendUserId ); 複製代碼 三、設定好友與分組的關係(即好友屬於哪一個分組) 1. DWORD dwGroupId = 1; 2. DWORD dwFriendUserId = 10010; 3. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION, dwGroupId, dwFriendUserId); 4. dwGroupId = 2; 5. dwFriendUserId = 10011; 6. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION, dwGroupId, dwFriendUserId); 複製代碼 四、設定使用者資訊(使用者資料) 1. BRAS_SetUserInfo(dwUserId, 1, "我的簽名"); 2. BRAS_SetUserInfo(dwUserId, 2, "020-85276986"); 3. …… 複製代碼 五、將前面設定的資料同步給用戶端 1. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SYNCDATA, 0, 0); 複製代碼 |
即時通訊 好友名單商務邏輯詳解