From 0e6f3ee40077cca08ab04df20a2db47227e07300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=9C=E6=96=B9=E5=A4=95=E9=98=B3?= Date: Sun, 13 Dec 2020 12:54:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3doc=E4=B8=AD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cim-client-sdk/cim-android-sdk/pom.xml | 3 +-- .../cim/sdk/android/CIMCacheManager.java | 4 +++- .../cim/sdk/android/CIMConnectorManager.java | 8 ++++---- .../cim/sdk/android/CIMPushManager.java | 10 +++++++++- .../cim/sdk/android/CIMPushService.java | 5 +++++ .../android/coder/ClientMessageDecoder.java | 4 ++-- .../android/coder/ClientMessageEncoder.java | 5 ++--- .../{Protobufable.java => BinaryBody.java} | 2 +- .../{HeartbeatRequest.java => Ping.java} | 8 ++++---- .../{HeartbeatResponse.java => Pong.java} | 8 ++++---- .../cim/sdk/android/model/SentBody.java | 2 +- doc/发送消息接口文档.doc | Bin 23040 -> 25088 bytes 12 files changed, 36 insertions(+), 23 deletions(-) rename cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/{Protobufable.java => BinaryBody.java} (97%) rename cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/{HeartbeatRequest.java => Ping.java} (88%) rename cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/{HeartbeatResponse.java => Pong.java} (88%) diff --git a/cim-client-sdk/cim-android-sdk/pom.xml b/cim-client-sdk/cim-android-sdk/pom.xml index 92b5088..8a4da9e 100755 --- a/cim-client-sdk/cim-android-sdk/pom.xml +++ b/cim-client-sdk/cim-android-sdk/pom.xml @@ -6,7 +6,7 @@ com.farsunset cim-android-sdk - 3.8.0 + 3.8.1 jar @@ -14,7 +14,6 @@ UTF-8 1.8 3.0.1 - 4.1.44.Final diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMCacheManager.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMCacheManager.java index 9ae4681..4876a14 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMCacheManager.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMCacheManager.java @@ -62,11 +62,13 @@ class CIMCacheManager { } public static String getString(Context context, String key) { - String value = null; + String value; ContentResolver resolver = context.getContentResolver(); Cursor cursor = resolver.query(Uri.parse(String.format(CONTENT_URI, context.getPackageName())), new String[]{key}, null, null, null); if (cursor != null && cursor.moveToFirst()) { value = cursor.getString(0); + }else { + value = null; } closeQuietly(cursor); return value; diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMConnectorManager.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMConnectorManager.java index d4df1ba..3214710 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMConnectorManager.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMConnectorManager.java @@ -173,10 +173,10 @@ class CIMConnectorManager { } public void sendHeartbeat() { - send(HeartbeatResponse.getInstance()); + send(Pong.getInstance()); } - public void send(final Protobufable body) { + public void send(final BinaryBody body) { if (!isConnected()) { return; @@ -313,8 +313,8 @@ class CIMConnectorManager { LOGGER.messageReceived(socketChannel, message); - if (message instanceof HeartbeatRequest) { - send(HeartbeatResponse.getInstance()); + if (message instanceof Ping) { + send(Pong.getInstance()); return; } diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushManager.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushManager.java index 561033e..04c8f08 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushManager.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushManager.java @@ -56,6 +56,8 @@ public class CIMPushManager { protected static final String ACTION_HIDE_PERSIST_NOTIFICATION = "ACTION_HIDE_PERSIST_NOTIFICATION"; + protected static final String ACTION_SEND_PONG = "ACTION_SEND_PONG"; + /** * 初始化,连接服务端,在程序启动页或者 在Application里调用 */ @@ -117,6 +119,12 @@ public class CIMPushManager { } + public static void pong(Context context) { + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.setAction(ACTION_SEND_PONG); + startService(context, serviceIntent); + } + private static void sendBindRequest(Context context, String account) { CIMCacheManager.putBoolean(context, CIMCacheManager.KEY_MANUAL_STOP, false); @@ -256,7 +264,7 @@ public class CIMPushManager { return currDeviceId; } - String deviceId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); + String deviceId = UUID.randomUUID().toString().replace("-", "").toUpperCase(); CIMCacheManager.putString(context, CIMCacheManager.KEY_DEVICE_ID, deviceId); diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushService.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushService.java index 696807d..599d305 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushService.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/CIMPushService.java @@ -34,6 +34,7 @@ import android.os.IBinder; import android.util.Log; import com.farsunset.cim.sdk.android.constant.CIMConstant; import com.farsunset.cim.sdk.android.logger.CIMLogger; +import com.farsunset.cim.sdk.android.model.Pong; import com.farsunset.cim.sdk.android.model.SentBody; import java.util.concurrent.atomic.AtomicBoolean; @@ -146,6 +147,10 @@ public class CIMPushService extends Service { handleKeepAlive(); } + if (CIMPushManager.ACTION_SEND_PONG.equals(action)) { + connectorManager.send(Pong.getInstance()); + } + if (CIMPushManager.ACTION_SET_LOGGER_EATABLE.equals(action)) { boolean enable = intent.getBooleanExtra(KEY_LOGGER_ENABLE, true); CIMLogger.getLogger().debugMode(enable); diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageDecoder.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageDecoder.java index 8e18b7e..1977dc4 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageDecoder.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageDecoder.java @@ -23,7 +23,7 @@ package com.farsunset.cim.sdk.android.coder; import com.farsunset.cim.sdk.android.constant.CIMConstant; -import com.farsunset.cim.sdk.android.model.HeartbeatRequest; +import com.farsunset.cim.sdk.android.model.Ping; import com.farsunset.cim.sdk.android.model.Message; import com.farsunset.cim.sdk.android.model.ReplyBody; import com.farsunset.cim.sdk.android.model.proto.MessageProto; @@ -73,7 +73,7 @@ public class ClientMessageDecoder { 消息读取完成后,通过type来解析成对应的消息体 */ if (CIMConstant.ProtobufType.S_H_RQ == type) { - return HeartbeatRequest.getInstance(); + return Ping.getInstance(); } if (CIMConstant.ProtobufType.REPLY_BODY == type) { diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageEncoder.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageEncoder.java index fc0c6e6..7b95a1b 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageEncoder.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/coder/ClientMessageEncoder.java @@ -22,14 +22,13 @@ package com.farsunset.cim.sdk.android.coder; import com.farsunset.cim.sdk.android.constant.CIMConstant; -import com.farsunset.cim.sdk.android.model.Protobufable; -import com.farsunset.cim.sdk.android.model.SentBody; +import com.farsunset.cim.sdk.android.model.BinaryBody; import java.nio.ByteBuffer; public class ClientMessageEncoder { - public ByteBuffer encode(Protobufable body) { + public ByteBuffer encode(BinaryBody body) { byte[] data = body.getByteArray(); diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Protobufable.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/BinaryBody.java similarity index 97% rename from cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Protobufable.java rename to cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/BinaryBody.java index 81ac373..4e3eaa6 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Protobufable.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/BinaryBody.java @@ -24,7 +24,7 @@ package com.farsunset.cim.sdk.android.model; /** * 需要向另一端发送的结构体 */ -public interface Protobufable { +public interface BinaryBody { byte[] getByteArray(); diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatRequest.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Ping.java similarity index 88% rename from cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatRequest.java rename to cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Ping.java index 3a52724..7a25df6 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatRequest.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Ping.java @@ -28,19 +28,19 @@ import java.io.Serializable; /** * 服务端心跳请求 */ -public class HeartbeatRequest implements Serializable, Protobufable { +public class Ping implements Serializable, BinaryBody { private static final long serialVersionUID = 1L; private static final String TAG = "SERVER_HEARTBEAT_REQUEST"; private static final String CMD_HEARTBEAT_REQUEST = "SR"; - private static final HeartbeatRequest object = new HeartbeatRequest(); + private static final Ping object = new Ping(); - private HeartbeatRequest() { + private Ping() { } - public static HeartbeatRequest getInstance() { + public static Ping getInstance() { return object; } diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatResponse.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Pong.java similarity index 88% rename from cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatResponse.java rename to cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Pong.java index 5c49100..96f7ca4 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/HeartbeatResponse.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/Pong.java @@ -28,19 +28,19 @@ import java.io.Serializable; /** * 客户端心跳响应 */ -public class HeartbeatResponse implements Serializable, Protobufable { +public class Pong implements Serializable, BinaryBody { private static final long serialVersionUID = 1L; private static final String TAG = "CLIENT_HEARTBEAT_RESPONSE"; private static final String CMD_HEARTBEAT_RESPONSE = "CR"; - private static final HeartbeatResponse object = new HeartbeatResponse(); + private static final Pong object = new Pong(); - private HeartbeatResponse() { + private Pong() { } - public static HeartbeatResponse getInstance() { + public static Pong getInstance() { return object; } diff --git a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/SentBody.java b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/SentBody.java index 1ef7569..ce1f247 100644 --- a/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/SentBody.java +++ b/cim-client-sdk/cim-android-sdk/src/main/java/com/farsunset/cim/sdk/android/model/SentBody.java @@ -31,7 +31,7 @@ import java.util.Set; /** * java |android 客户端请求结构 */ -public class SentBody implements Serializable, Protobufable { +public class SentBody implements Serializable, BinaryBody { private static final long serialVersionUID = 1L; diff --git a/doc/发送消息接口文档.doc b/doc/发送消息接口文档.doc index 4f0f1d963b8ca7b1148491ddb5fecc9a4d24f142..98207c8c89a5fdb3ac5d584dc9785328be1ac2a8 100644 GIT binary patch delta 3251 zcmc(iX>3$g6vxkfGt<{)S~_hhh0b)QomZAZ+nGZ5p>zYMr4-w+Z(3-fK%^>V2?@|@ z1wUYfUN9(xAQI(^NO=;K5Ed0ABuJV@f>9KVnqW{_5=|Ot{h!wvD4>)NCfwxLyPtdJ z-E+=8ZTVQVd?~hiTq5p{E5Emt?ukC!E7F6lA3Eo+AmDcCpKae5H;V19li_9#Ru z>KW*NkM)D4*Ziub6_WqfPpP*>$Tcjk3emmhcA+0t&ncEVdXbjut>JHqlm=Rh17D^( zQfV6gVbm8=QGv^*zu3N2N2`QqSwzg2BE#Mun8|;_fsMCVv`KYmSw=GX@ z7-R>pc=u!O05}8=gQMU$xCOdF4+se(3I$dWrF)|<2yYac@gM=%feUy*7AOEdPy~uW zC8*ZDG1yj(<{U5&)Pu#K5iA4EU@h1LUI$x2yY7v+z#FXd%!+$5F7%Zf}`LV zI1bL}>G546>kOLbz(sHgTme6UpTV!-4{!_I0X-ljT+d4QS`>za`XCQw%8J7QEX_~3cs0}!MzbRFd|Fhc0|&GN5?hlZSY!bx0>xkw@Plhzofpo-D%OigQ`1NhoyWBk==w{gx#Y`4%X7dcevbjg0&oPuEHpL z3VR8A2z$rG{$I=2zcaRfCk@w?04X^R`s^|K>f5wjv0y-5&3y7|z<$X-$&QHYzF!8` zM0)~FHV&i-j;+&#NfWrfKJz0p>%swHFW`W{!QcVie!s6K(Su*9{|wslq!NaY7V`wE zx&~5J-f(HLWM*wREOAIW3(gt0%-1v2KH$wf$sxHhW{z(h+c>UqOuO-jCEdU%M>&pg z9Mw3YJsnHplj8x$QjVh>Lm#-Ur)Wv63kO~w2nOBjC~zq zSa1nyfmDY}pH8Pl2HMGTexWBTlB(sSY(lTnGMS(Odg=QAt>b)v$KDW3jvwfqS zRa8_gNTDjCXe3rfQAlmvxsxcCTr##O(^*SStcg)-F>AlKX4THHHAEwD{)zF~`5w}- zCPnc;PGAX{X-I8%&5`Bf+wkHL&MrSowzmD^d4M#98n7cvRurWQw`?j}IWdQ3W298c zfdE@Th=n#cENbl9(6*#!2GT{OiP2P68ADTz`fIF2tT5h%eQt;sVJ<|>;^NOe;5iN%pZ-C=#^_OdOiKD(q!NsS~yA7K55fQtz9 zxy|ET-q6pLEwPx+npR6s#V?^6=Mu=Pbw}k1ak#2Oc&z?U8ZMs~#Tac#+B9ua=S5*c z8|eda&9b?^j6Y7)h4Si@p|M#onjGK-<0y-AX`CEXJw=~W9j*N9WL>pWFE-bU!?n$d z7$sLtYZH00d)m4P2V|~8?v5gDGcx5BB}P9veXlaV{|8|^;eR5MP_q&)kPK3Q8?f!C bg5h8U7zucN8tT!3Huu@WxxU*`Qzrfa4Y_C! delta 2339 zcmbuBZETZO6vxkf))zL`vX;@Yjjml^*chx^7ukyeEN%A!jNs-rf{wX?a|i^PKzvEW z5+E3|5abXu2_dLxriS45EPODCAY#NIun-Iq5l9Rwktj$oF>&*Mo^7DP=!f0qw|ky@ z?>SF<@Bf_J#AhneuXYxDr_o4DBg%)Vz~Io(kc>_Ty>*8a4=K0GVz(AZEtc`&mdp#a zm(30rQ99=)`GY}N<(LYLCz^%66@Bx_TImMx?BccsUM^1Zn;SBSH26(-zcT?on4fJU zTA>mBkV@2q=Ob7@iNmJN=B0@IyMEmIo3fn3;u?z{HtkaSN7gSjy(^_l>2p#~C_a`H zVrBO@R*oZD4R(RuU@wR5CwZ+sg}=6Y**oECcrQlxgC6ic=mUqr4R9OW1%rT+iA(_R zOFOH=7MOOB2GYS~kPiw#33v#Uf^rZAReIP7w{1lu4=fFj9349B_1J}U~a0lE4 zgUNcyohg1!=$uCW9<+>&n21-a`jJz}6Qi-s4VHeoi>Dd1LmboNW{5pTKI7UArR_=q=^cjh>qJK!Hs838r#X%XPVP2)N2 z-^?Ak+mb9qJdl?iFqEmF4{JZ7%5mKRo%aI5SOv8lk(mDxFG!mB$q~!(%9+Y}x&Ysg z#V%hd&o*u4)4qAmRsZ(kPEH}SIEe^E00sA*iE{Df^5N@rUU<;AGqhX36fmg_(!^0z zBZ`RwkxBzQrWV*A`Fprh9?(1zZXz9cAfDbCDpRcao&2jW=rW7ST7al)4G?uD#uie9 zDQXlYb^}pj&)7nWh(*96-eW*idv0tYMerha5&DlngnoByAtgs7FC-`Iz{m-9l)5=I z)%MRLnvD|=?P@SN|L1_5W=X1a-~vW+>5lTxmGbEqD|##{gEvJMt4aJ#^lSPDh)Co~329lG_0jw`t=yu39Uw$3nO4e<0> zp}NLPq8?k^c+)Kv#~MFpMk^jEr6mzXnpTRDDaKof%(Sh2`HJ%!w{#5R=FrGXX%w69 zq($=;wV_{7LsU#U{G5EHGP@|37RSFJ$Cd-C6`(wm2Xj8H9`SJ37)_%M-O0}r<>5QO zT{+WJOLOGCR0|z=?ya$|=%0QXwRzB?l#GMCBq&QBhV3hgw4^8g6c* z+4y?(6B;E!iax!)#-^;CT3!9~3)}P;=hbRKl~82DLP46s->5y>cj-44beOrZ?)z~z zDa6<|eQy0H3RiZZuc22JpANj|yZn`kU?$PgRom5aK_$UPStjWZj`WxDAe%IcuQg^) z3R9Ru2F2*hX(m-r8QYo`>dj4dZK6!h1TtBIWu+A6wkD4rF+HXF9$&AiAa7{iqKf&C z=9k82B5D(UJD{