Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccim_sdk_android
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
ccim_sdk_android
Commits
92ff0173
Commit
92ff0173
authored
Oct 21, 2021
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
大多数的请求
parent
82ba9be3
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
822 additions
and
131 deletions
+822
-131
.idea/vcs.xml
.idea/vcs.xml
+6
-0
app/src/main/java/com/ccwangluo/im/FirstFragment.java
app/src/main/java/com/ccwangluo/im/FirstFragment.java
+98
-2
app/src/main/res/layout/fragment_first.xml
app/src/main/res/layout/fragment_first.xml
+141
-4
ccim/src/main/java/com/ccwangluo/ccim/CCClient.java
ccim/src/main/java/com/ccwangluo/ccim/CCClient.java
+337
-106
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageEventCallback.java
...ava/com/ccwangluo/ccim/listener/MessageEventCallback.java
+9
-0
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageListener.java
...ain/java/com/ccwangluo/ccim/listener/MessageListener.java
+7
-0
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultCallback.java
...main/java/com/ccwangluo/ccim/listener/ResultCallback.java
+5
-0
ccim/src/main/java/com/ccwangluo/ccim/manage/CallBackManager.java
.../main/java/com/ccwangluo/ccim/manage/CallBackManager.java
+22
-0
ccim/src/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
...c/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
+172
-0
ccim/src/main/java/com/ccwangluo/ccim/modle/IrequestData.java
.../src/main/java/com/ccwangluo/ccim/modle/IrequestData.java
+1
-1
ccim/src/main/java/com/ccwangluo/ccim/modle/MyIReaderProtocol.java
...main/java/com/ccwangluo/ccim/modle/MyIReaderProtocol.java
+2
-2
ccim/src/main/proto/chat.proto
ccim/src/main/proto/chat.proto
+22
-16
No files found.
.idea/vcs.xml
0 → 100644
View file @
92ff0173
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"VcsDirectoryMappings"
>
<mapping
directory=
"$PROJECT_DIR$"
vcs=
"Git"
/>
</component>
</project>
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/FirstFragment.java
View file @
92ff0173
...
...
@@ -7,9 +7,9 @@ import android.view.ViewGroup;
import
androidx.annotation.NonNull
;
import
androidx.fragment.app.Fragment
;
import
androidx.navigation.fragment.NavHostFragment
;
import
com.ccwangluo.ccim.CCClient
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.ccwangluo.im.databinding.FragmentFirstBinding
;
public
class
FirstFragment
extends
Fragment
{
...
...
@@ -33,7 +33,12 @@ public class FirstFragment extends Fragment {
binding
.
buttonLogin
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
login
();
CCClient
.
getInstance
().
login
(
"user1"
,
"123456"
,
new
ResultCallback
<
String
>(){
@Override
public
void
onSuccess
(
String
s
)
{
}
});
}
});
...
...
@@ -50,6 +55,97 @@ public class FirstFragment extends Fragment {
CCClient
.
getInstance
().
getChatList
();
}
});
binding
.
getOfflineMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
getOfflineMessage
();
}
});
binding
.
searchUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
searchUser
(
"user2"
);
}
});
binding
.
addUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
addContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
}
});
binding
.
sendTextMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendTextMessage
(
"你好"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
}
});
binding
.
getContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
getContactRequests
();
}
});
binding
.
checkContactRequests
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
checkContactReq
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
);
}
});
binding
.
createContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
createContactGroup
(
"zhangsan"
);
}
});
binding
.
moveContactGroupRequest
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
moveContactGroup
(
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()),
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
}
});
binding
.
deleteContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
deleteContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
}
});
binding
.
blockContact
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
blockContact
(
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()),
true
);
}
});
binding
.
reportIllegalUser
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
reportIllegalUser
(
"搞黄色"
,
"搞黄色"
,
Long
.
parseLong
(
binding
.
userId
.
getText
().
toString
()));
}
});
binding
.
sendGroupMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendGroupMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
groupId
.
getText
().
toString
()));
}
});
binding
.
sendChannelMessage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCClient
.
getInstance
().
sendChannelMessage
(
"搞黄色"
,
Long
.
parseLong
(
binding
.
channelId
.
getText
().
toString
()));
}
});
}
@Override
...
...
app/src/main/res/layout/fragment_first.xml
View file @
92ff0173
...
...
@@ -3,10 +3,14 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:orientation=
"
vertic
al"
android:orientation=
"
horizont
al"
android:layout_height=
"match_parent"
tools:context=
".FirstFragment"
>
<LinearLayout
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:layout_height=
"match_parent"
>
<Button
android:layout_marginTop=
"50dp"
...
...
@@ -17,7 +21,7 @@
android:text=
"login"
/>
<Button
android:layout_marginTop=
"
5
0dp"
android:layout_marginTop=
"
2
0dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/connectChatServer"
android:layout_width=
"wrap_content"
...
...
@@ -25,11 +29,144 @@
android:text=
"connectChatServer"
/>
<Button
android:layout_marginTop=
"
5
0dp"
android:layout_marginTop=
"
2
0dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/getChatList"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"getChatList"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/getOfflineMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"getOfflineMessage"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/searchUser"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"searchUser"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/addUser"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"addUser"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/getContactRequests"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"getContactRequests"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/checkContactRequests"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"checkContactRequests"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/sendTextMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"sendTextMessage"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/createContactGroupRequest"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"createContactGroup"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
android:layout_height=
"match_parent"
>
<EditText
android:id=
"@+id/userId"
android:layout_width=
"match_parent"
android:text=
"2"
android:hint=
"userId"
android:layout_height=
"wrap_content"
/>
<EditText
android:id=
"@+id/groupId"
android:layout_width=
"match_parent"
android:hint=
"groupId"
android:text=
"1"
android:layout_height=
"wrap_content"
/>
<EditText
android:id=
"@+id/channelId"
android:text=
"1"
android:layout_width=
"match_parent"
android:hint=
"channelId"
android:layout_height=
"wrap_content"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/moveContactGroupRequest"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"moveContactGroup"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/deleteContact"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"deleteContact"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/blockContact"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"blockContact"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/reportIllegalUser"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"reportIllegalUser"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/sendGroupMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"sendGroupMessage"
/>
<Button
android:layout_marginTop=
"20dp"
android:layout_gravity=
"center_horizontal"
android:id=
"@+id/sendChannelMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"sendChannelMessage"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
ccim/src/main/java/com/ccwangluo/ccim/CCClient.java
View file @
92ff0173
This diff is collapsed.
Click to expand it.
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageEventCallback.java
0 → 100644
View file @
92ff0173
package
com.ccwangluo.ccim.listener
;
import
ccim.protocol.Chat
;
import
ccim.protocol.Push
;
public
interface
MessageEventCallback
{
// void onRecvMessage(Push)
}
ccim/src/main/java/com/ccwangluo/ccim/listener/MessageListener.java
0 → 100644
View file @
92ff0173
package
com.ccwangluo.ccim.listener
;
import
com.xuhao.didi.core.pojo.OriginalData
;
public
interface
MessageListener
{
void
onMessageListener
(
OriginalData
data
);
}
ccim/src/main/java/com/ccwangluo/ccim/listener/ResultCallback.java
0 → 100644
View file @
92ff0173
package
com.ccwangluo.ccim.listener
;
public
interface
ResultCallback
<
T
>
{
void
onSuccess
(
T
t
);
}
ccim/src/main/java/com/ccwangluo/ccim/manage/CallBackManager.java
0 → 100644
View file @
92ff0173
package
com.ccwangluo.ccim.manage
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
java.util.HashMap
;
public
class
CallBackManager
<
T
>
{
private
HashMap
<
Integer
,
ResultCallback
<
T
>>
callbackHashMap
=
new
HashMap
<>();
public
void
addCallBack
(
int
id
,
ResultCallback
<
T
>
resultCallback
)
{
callbackHashMap
.
put
(
id
,
resultCallback
);
}
public
ResultCallback
<
T
>
getCallBack
(
int
id
)
{
return
callbackHashMap
.
get
(
id
);
}
public
void
removeCallBack
(
int
id
)
{
callbackHashMap
.
remove
(
id
);
}
}
ccim/src/main/java/com/ccwangluo/ccim/manage/SocketManageer.java
0 → 100644
View file @
92ff0173
package
com.ccwangluo.ccim.manage
;
import
com.ccwangluo.ccim.CCClient
;
import
com.ccwangluo.ccim.modle.IrequestData
;
import
com.ccwangluo.ccim.modle.MyIReaderProtocol
;
import
com.ccwangluo.ccim.listener.MessageListener
;
import
com.ccwangluo.ccim.listener.ResultCallback
;
import
com.google.protobuf.InvalidProtocolBufferException
;
import
com.xuhao.didi.core.pojo.OriginalData
;
import
com.xuhao.didi.socket.client.sdk.OkSocket
;
import
com.xuhao.didi.socket.client.sdk.client.ConnectionInfo
;
import
com.xuhao.didi.socket.client.sdk.client.OkSocketOptions
;
import
com.xuhao.didi.socket.client.sdk.client.action.SocketActionAdapter
;
import
com.xuhao.didi.socket.client.sdk.client.connection.IConnectionManager
;
import
java.util.logging.Logger
;
import
ccim.protocol.Auth
;
import
ccim.protocol.Chat
;
public
class
SocketManageer
{
private
Logger
logger
=
Logger
.
getLogger
(
CCClient
.
class
.
getName
());
private
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
;
public
SocketManageer
(
CallBackManager
<
Chat
.
ChatResponseMessage
>
callBackManager
)
{
this
.
callBackManager
=
callBackManager
;
}
private
ConnectionInfo
authInfo
;
private
ConnectionInfo
chatInfo
;
private
String
token
;
private
ResultCallback
<
String
>
loginCallBack
;
public
String
getToken
()
{
return
token
;
}
public
void
setToken
(
String
token
)
{
this
.
token
=
token
;
}
public
Logger
getLogger
()
{
return
logger
;
}
public
void
setLogger
(
Logger
logger
)
{
this
.
logger
=
logger
;
}
public
ConnectionInfo
getAuthInfo
()
{
return
authInfo
;
}
public
void
setAuthInfo
(
ConnectionInfo
authInfo
)
{
this
.
authInfo
=
authInfo
;
}
public
ConnectionInfo
getChatInfo
()
{
return
chatInfo
;
}
public
void
setChatInfo
(
ConnectionInfo
chatInfo
)
{
this
.
chatInfo
=
chatInfo
;
}
public
void
initAuth
()
{
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
this
.
authInfo
=
initServer
(
"117.144.156.2"
,
9000
,
new
MessageListener
()
{
@Override
public
void
onMessageListener
(
OriginalData
data
)
{
try
{
Auth
.
AuthResponseMessage
chatResponseMessage
=
Auth
.
AuthResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
logger
.
info
(
String
.
valueOf
(
chatResponseMessage
));
if
(
chatResponseMessage
.
getHeader
().
getCode
()
==
0
)
{
token
=
chatResponseMessage
.
getLoginRes
().
getToken
();
String
server
=
chatResponseMessage
.
getLoginRes
().
getServer
();
initChat
(
server
);
OkSocket
.
open
(
authInfo
).
disconnect
();
if
(
loginCallBack
!=
null
){
loginCallBack
.
onSuccess
(
token
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
});
}
public
void
login
(
String
username
,
String
password
,
ResultCallback
<
String
>
resultCallback
)
{
Auth
.
LoginRequest
.
Builder
builder
=
Auth
.
LoginRequest
.
newBuilder
().
setUsername
(
"user1"
).
setPassword
(
"123456"
).
setAppId
(
1
);
Auth
.
AuthRequestMessage
build
=
Auth
.
AuthRequestMessage
.
newBuilder
().
setLoginReq
(
builder
.
build
()).
build
();
OkSocket
.
open
(
getAuthInfo
())
.
send
(
new
IrequestData
(
build
.
toByteArray
()));
this
.
loginCallBack
=
resultCallback
;
}
private
void
initChat
(
String
server
)
{
//连接参数设置(IP,端口号),这也是一个连接的唯一标识,不同连接,该参数中的两个值至少有其一不一样
String
[]
split
=
server
.
split
(
":"
);
this
.
chatInfo
=
initServer
(
split
[
0
],
Integer
.
parseInt
(
split
[
1
]),
new
MessageListener
()
{
@Override
public
void
onMessageListener
(
OriginalData
data
)
{
try
{
Chat
.
ChatResponseMessage
chatResponseMessage
=
Chat
.
ChatResponseMessage
.
parseFrom
(
data
.
getBodyBytes
());
if
(
chatResponseMessage
.
getHeader
().
getCode
()
==
0
)
{
int
seq
=
chatResponseMessage
.
getHeader
().
getSeq
();
if
(
seq
>
0
){
ResultCallback
<
Chat
.
ChatResponseMessage
>
callBack
=
callBackManager
.
getCallBack
(
seq
);
if
(
callBack
!=
null
){
callBack
.
onSuccess
(
chatResponseMessage
);
callBackManager
.
removeCallBack
(
seq
);
}
}
else
{
//主动接受的消息
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
});
}
private
ConnectionInfo
initServer
(
String
ip
,
int
port
,
MessageListener
messageListener
)
{
ConnectionInfo
authInfo
=
new
ConnectionInfo
(
ip
,
port
);
//调用OkSocket,开启这次连接的通道,拿到通道Manager
IConnectionManager
manager
=
OkSocket
.
open
(
authInfo
);
//获得当前连接通道的参配对象
OkSocketOptions
options
=
manager
.
getOption
();
//基于当前参配对象构建一个参配建造者类
OkSocketOptions
.
Builder
builder
=
new
OkSocketOptions
.
Builder
(
options
);
//修改参配设置(其他参配请参阅类文档)
// builder.setSinglePackageBytes(size);
//建造一个新的参配对象并且付给通道
manager
.
option
(
builder
.
build
());
//调用通道进行连接
manager
.
connect
();
//设置自定义解析头
OkSocketOptions
.
Builder
okOptionsBuilder
=
new
OkSocketOptions
.
Builder
();
okOptionsBuilder
.
setReaderProtocol
(
new
MyIReaderProtocol
());
//将新的修改后的参配设置给连接管理器
manager
.
option
(
okOptionsBuilder
.
build
());
manager
.
registerReceiver
(
new
SocketActionAdapter
()
{
@Override
public
void
onSocketConnectionSuccess
(
ConnectionInfo
info
,
String
action
)
{
super
.
onSocketConnectionSuccess
(
info
,
action
);
logger
.
info
(
"connect success"
);
}
@Override
public
void
onSocketDisconnection
(
ConnectionInfo
info
,
String
action
,
Exception
e
)
{
super
.
onSocketDisconnection
(
info
,
action
,
e
);
logger
.
info
(
"disconnect success"
);
}
@Override
public
void
onSocketReadResponse
(
ConnectionInfo
info
,
String
action
,
OriginalData
data
)
{
super
.
onSocketReadResponse
(
info
,
action
,
data
);
messageListener
.
onMessageListener
(
data
);
}
});
return
authInfo
;
}
}
ccim/src/main/java/com/ccwangluo/ccim/IrequestData.java
→
ccim/src/main/java/com/ccwangluo/ccim/
modle/
IrequestData.java
View file @
92ff0173
package
com.ccwangluo.ccim
;
package
com.ccwangluo.ccim
.modle
;
import
com.xuhao.didi.core.iocore.interfaces.ISendable
;
...
...
ccim/src/main/java/com/ccwangluo/ccim/MyIReaderProtocol.java
→
ccim/src/main/java/com/ccwangluo/ccim/
modle/
MyIReaderProtocol.java
View file @
92ff0173
package
com.ccwangluo.ccim
;
package
com.ccwangluo.ccim
.modle
;
import
com.xuhao.didi.core.protocol.IReaderProtocol
;
import
java.nio.ByteOrder
;
class
MyIReaderProtocol
implements
IReaderProtocol
{
public
class
MyIReaderProtocol
implements
IReaderProtocol
{
@Override
public
int
getHeaderLength
()
{
return
4
;
...
...
ccim/src/main/proto/chat.proto
View file @
92ff0173
...
...
@@ -61,26 +61,32 @@ message ConnectRequest {
}
message
ConnectResponse
{
bool
connected
=
1
;
bool
connected
=
1
;
//是否连接成功
}
message
PullContactsRequest
{}
message
PullContactsResponse
{
message
ContactGroup
{
int64
group_id
=
1
;
string
name
=
2
;
int64
group_id
=
1
;
// 群组id
string
name
=
2
;
// 群组名称
}
message
Contact
{
int64
app_id
=
1
;
enum
Status
{
NORMAL
=
0
;
// 正常
MUTED
=
1
;
// 拒绝接收消息
BLACK_LIST
=
2
;
// 黑名单
}
int64
app_id
=
1
;
// 应用id
int64
user_id
=
2
;
int64
contact_user_id
=
3
;
string
contact_user_name
=
4
;
int64
contact_group_id
=
5
;
int64
private_id
=
6
;
int64
read_msg_id
=
7
;
int32
status
=
8
;
string
ext_data
=
9
;
int64
contact_user_id
=
3
;
// 联系人用户id
string
contact_user_name
=
4
;
// 联系人用户名字
int64
contact_group_id
=
5
;
// 联系人群组id
int64
private_id
=
6
;
// 私聊对话id
int64
read_msg_id
=
7
;
// 已读消息id
Status
status
=
8
;
// 联系人状态
string
ext_data
=
9
;
// 扩展数据
}
message
Group
{
int64
group_id
=
1
;
...
...
@@ -100,10 +106,10 @@ message PullContactsResponse {
string
name
=
6
;
string
ext_data
=
7
;
}
repeated
ContactGroup
contact_groups
=
2
;
repeated
Contact
contacts
=
3
;
repeated
Group
groups
=
4
;
repeated
Channel
channels
=
5
;
repeated
ContactGroup
contact_groups
=
2
;
// 联系人群组列表
repeated
Contact
contacts
=
3
;
// 联系人列表
repeated
Group
groups
=
4
;
// 群组
repeated
Channel
channels
=
5
;
// 频道
}
message
SearchRequest
{
...
...
@@ -135,7 +141,7 @@ message ContactRequestsRequest {}
message
ContactRequestsResponse
{
message
ContactRequest
{
int64
req
_id
=
1
;
int64
user
_id
=
1
;
string
username
=
2
;
}
repeated
ContactRequest
requests
=
1
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment