Skip to content

Commit 5d40cc1

Browse files
committed
add 网络连接自动登陆
1 parent f59cb04 commit 5d40cc1

File tree

4 files changed

+65
-8
lines changed

4 files changed

+65
-8
lines changed

android/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@
137137
<action android:name="com.xiaomi.mipush.ERROR"/>
138138
</intent-filter>
139139
</receiver>
140+
<receiver android:name=".receiver.NetworkReceiver">
141+
<intent-filter>
142+
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
143+
<category android:name="android.intent.category.DEFAULT"/>
144+
</intent-filter>
145+
</receiver>
140146
</application>
141147
</manifest>
142148

android/src/main/java/com/netease/im/ReactCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ public static Object createRecentList(List<RecentContact> recents, int unreadNum
271271
map.putString("content", content);
272272
array.pushMap(map);
273273
}
274-
LogUtil.w(TAG, array + "");
274+
// LogUtil.w(TAG, array + "");
275275
}
276276
writableMap.putArray("recents", array);
277277
writableMap.putString("unreadCount", Integer.toString(unreadNumTotal));

android/src/main/java/com/netease/im/login/LoginService.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class LoginService {
3434
final static String TAG = "LoginService";
3535
// 自己的用户帐号
3636
private String account;
37+
private String token;
3738
private AbortableFuture<LoginInfo> loginInfoFuture;
3839

3940
private LoginService() {
@@ -62,22 +63,29 @@ public String getAccount() {
6263
}
6364

6465
public LoginInfo getLoginInfo(Context context) {
65-
LoginInfo info = new LoginInfo(account, null);
66+
LoginInfo info = new LoginInfo(account, token);
6667
return info;
6768
}
6869

6970
void initLogin(LoginInfo loginInfo) {
7071

7172
}
7273

73-
public void login(LoginInfo loginInfo, final RequestCallback<LoginInfo> callback) {
74-
loginInfoFuture = NIMClient.getService(AuthService.class).login(loginInfo);
74+
public void autoLogin() {
75+
login(getLoginInfo(null), null);
76+
}
77+
78+
public void login(final LoginInfo loginInfoP, final RequestCallback<LoginInfo> callback) {
79+
loginInfoFuture = NIMClient.getService(AuthService.class).login(loginInfoP);
7580
loginInfoFuture.setCallback(new RequestCallback<LoginInfo>() {
7681
@Override
7782
public void onSuccess(LoginInfo loginInfo) {
7883
account = loginInfo.getAccount();
84+
token = loginInfoP.getToken();
7985
initLogin(loginInfo);
80-
callback.onSuccess(loginInfo);
86+
if (callback != null) {
87+
callback.onSuccess(loginInfo);
88+
}
8189

8290
registerObserver(true);
8391
startLogin();
@@ -87,14 +95,18 @@ public void onSuccess(LoginInfo loginInfo) {
8795

8896
@Override
8997
public void onFailed(int code) {
90-
callback.onFailed(code);
91-
registerObserver(false);
98+
if (callback != null) {
99+
callback.onFailed(code);
100+
}
101+
registerObserver(true);
92102
loginInfoFuture = null;
93103
}
94104

95105
@Override
96106
public void onException(Throwable exception) {
97-
callback.onException(exception);
107+
if (callback != null) {
108+
callback.onException(exception);
109+
}
98110
registerObserver(false);
99111
loginInfoFuture = null;
100112
}
@@ -181,6 +193,7 @@ public void logout() {
181193
// 清理缓存&注销监听&清除状态
182194
DataCacheManager.clearDataCache();
183195
account = null;
196+
token = null;
184197
LoginSyncDataStatusObserver.getInstance().reset();
185198
}
186199

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.netease.im.receiver;
2+
3+
import android.content.BroadcastReceiver;
4+
import android.content.Context;
5+
import android.content.Intent;
6+
import android.net.ConnectivityManager;
7+
import android.net.NetworkInfo;
8+
9+
import com.facebook.react.bridge.Arguments;
10+
import com.facebook.react.bridge.WritableMap;
11+
import com.netease.im.ReactCache;
12+
import com.netease.im.login.LoginService;
13+
import com.netease.nimlib.sdk.NIMClient;
14+
import com.netease.nimlib.sdk.StatusCode;
15+
16+
/**
17+
* Created by dowin on 2017/9/28.
18+
*/
19+
20+
public class NetworkReceiver extends BroadcastReceiver {
21+
@Override
22+
public void onReceive(Context context, Intent intent) {
23+
24+
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
25+
// NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
26+
// NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
27+
NetworkInfo activeInfo = manager.getActiveNetworkInfo();
28+
if (activeInfo != null && activeInfo.isAvailable()) {
29+
if (NIMClient.getStatus().shouldReLogin()) {
30+
LoginService.getInstance().autoLogin();
31+
}
32+
} else {
33+
WritableMap r = Arguments.createMap();
34+
r.putString("status", Integer.toString(StatusCode.NET_BROKEN.getValue()));
35+
ReactCache.emit(ReactCache.observeOnKick, r);
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)