添加腾讯IM SDK

对接recook账号获取腾讯IM 账号接口
master
laiiihz 5 years ago
parent 5d00c4dd56
commit 3ed76003ff

@ -457,4 +457,10 @@ class LiveAPI {
///
static const String liveAttentionList = '/v1/live/live/follow_list';
///IM
static const String tencentUser = '/v1/live/live/im/login_info';
///IM
static const String tencentUserNotLogin = '/v1/live/live/im/no_login_info';
}

@ -18,6 +18,7 @@ import 'package:recook/third_party/bugly_helper.dart';
import 'package:recook/utils/CommonLocalizationsDelegate.dart';
import 'package:recook/utils/test.dart';
import 'package:redux/redux.dart';
import 'package:tencent_im_plugin/tencent_im_plugin.dart';
import 'constants/header.dart';
import 'utils/app_router.dart';
@ -30,7 +31,13 @@ List<CameraDescription> cameras;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
cameras = await availableCameras();
//AMap
AmapLocation.instance.init(iosKey: 'e8a8057cfedcdcadcf4e8f2c7f8de982');
//im
TencentImPlugin.init(appid: '1400423961');
AppConfig.initial(useEncrypt: false
///

@ -1,9 +1,15 @@
import 'package:flutter/material.dart';
import 'package:many_like/many_like.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/models/tencent_im_user_model.dart';
import 'package:recook/pages/live/tencent_im/tencent_im_tool.dart';
import 'package:recook/pages/live/widget/live_user_bar.dart';
import 'package:recook/pages/live/widget/more_people.dart';
import 'package:recook/widgets/custom_image_button.dart';
import 'package:tencent_im_plugin/tencent_im_plugin.dart';
import 'package:tencent_live_fluttify/tencent_live_fluttify.dart';
class LiveStreamViewPage extends StatefulWidget {
@ -24,11 +30,23 @@ class _LiveStreamViewPageState extends State<LiveStreamViewPage> {
// _livePlayer?.pausePlay();
// CRoute.transparent(context, LiveBlurPage());
// });
//IM
TencentIMTool.login().then((_) {
DPrint.printLongJson('用户登陆');
TencentImPlugin.addListener(parseMessage);
});
}
parseMessage(ListenerTypeEnum type, dynamic params) {
print(type.toString());
}
@override
void dispose() {
_livePlayer?.stopPlay();
TencentImPlugin.removeListener(parseMessage);
TencentImPlugin.logout();
DPrint.printLongJson('用户退出');
super.dispose();
}

@ -0,0 +1,22 @@
class TencentIMUserModel {
String identifier;
String sign;
TencentIMUserModel({this.identifier, this.sign});
TencentIMUserModel.empty() {
identifier = '';
sign = '';
}
TencentIMUserModel.fromJson(Map<String, dynamic> json) {
identifier = json['identifier'];
sign = json['sign'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['identifier'] = this.identifier;
data['sign'] = this.sign;
return data;
}
}

@ -5,7 +5,6 @@ import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/pages/live/live_stream/live_stream_view_page.dart';
import 'package:recook/pages/live/models/follow_list_model.dart';
import 'package:recook/pages/live/models/live_attention_list_model.dart';
import 'package:recook/pages/live/models/live_list_model.dart';
import 'package:recook/utils/custom_route.dart';

@ -0,0 +1,35 @@
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/models/tencent_im_user_model.dart';
import 'package:tencent_im_plugin/tencent_im_plugin.dart';
class TencentIMTool {
static TencentIMUserModel model;
static int loginCount = 0;
static Future login() async {
if (model == null) model = await getTencentImUser();
await TencentImPlugin.initStorage(identifier: model.identifier);
await TencentImPlugin.login(
identifier: model.identifier,
userSig: model.sign,
).catchError((e) {
loginCount++;
model = null;
if (loginCount < 20) login();
});
}
static Future<TencentIMUserModel> getTencentImUser() async {
final bool isLogin = UserManager.instance.haveLogin;
ResultData resultData = await HttpManager.post(
isLogin ? LiveAPI.tencentUser : LiveAPI.tencentUserNotLogin,
{},
);
if (resultData?.data['data'] == null)
return TencentIMUserModel.empty();
else
return TencentIMUserModel.fromJson(resultData?.data['data']);
}
}

@ -989,6 +989,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0-nullsafety.1"
tencent_im_plugin:
dependency: "direct main"
description:
name: tencent_im_plugin
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.44"
tencent_live_fluttify:
dependency: "direct main"
description:

@ -179,6 +179,8 @@ dependencies:
#腾讯直播
tencent_live_fluttify: ^0.2.0+1
#腾讯IM
tencent_im_plugin: ^0.2.44
#瀑布流
waterfall_flow: 2.0.3
#相机

Loading…
Cancel
Save