Compare commits

..

No commits in common. '88d90861147454dccc71460897bb80f7f8bc9cc5' and '1e5a475195d45375d37284bd601c35ee9d9fe728' have entirely different histories.

@ -4,34 +4,44 @@ import V2NIM, { V2NIMConst } from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK";
import { getMsgContentTipByType } from "./pages/NEUIKit/utils/msg";
import { STORAGE_KEY } from "./pages/NEUIKit/utils/constants";
import { isWxApp } from "./pages/NEUIKit/utils";
import { V2NIMMessage, V2NIMMessagePushConfig, V2NIMConversation } from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK/V2NIMMessageService";
import { V2NIMMessage, V2NIMMessagePushConfig } from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK/V2NIMMessageService";
import { unix } from "dayjs";
export default {
globalData: {
timer: null, //
reconnectTimer: null, //
themeColor: "#00b666",
themeBackgroundColor: "#00b66621",
},
onLaunch() {
let that = this;
uni.removeStorageSync("selectedCity");
//
// uni.onBeforeAppRoute((res) => {
// console.log("setNavStyle", res);
// try {
// that.G.Post("/common/user/browsing/history/addRecord", { browsingUrl: res.path }, (res) => {});
// } catch (error) {
// console.log("error", error);
// }
// });
//
uni.addInterceptor("navigateTo", {
//
invoke(args) {
console.log("navigateTo 跳转前", args);
that.G.watchUserPage(args.url);
},
});
uni.addInterceptor("reLaunch", {
//
invoke(args) {
console.log("reLaunch 跳转前", args);
that.G.watchUserPage(args.url);
},
});
uni.addInterceptor("redirectTo", {
//
invoke(args) {
console.log("redirectTo 跳转前", args);
that.G.watchUserPage(args.url);
@ -41,7 +51,6 @@ export default {
onShow: function (options) {
let that = this;
console.log("show 项目init", options, decodeURIComponent(options.query.scene));
// id
uni.removeStorageSync("scene");
uni.removeStorageSync("user_scene");
@ -65,21 +74,15 @@ export default {
} else {
uni.setStorageSync("apply-invite-code", "");
}
if (uni.getStorageSync("apply-token")) {
this.G.checkToken();
}
// -
if (!that.globalData.timer) {
that.checkNum();
that.checkAndReconnectIM(); //
// 15
that.globalData.timer = setInterval(() => {
console.log("inner+++++++++++++++++++++++++++++++++++++++++++++++");
that.checkNum();
that.checkAndReconnectIM();
}, 15 * 1000);
}, 30 * 1000);
}
uni.$on("isGlogin", function (data) {
@ -88,127 +91,19 @@ export default {
that.initWyyx();
}
});
//
if (uni.getStorageSync("apply-token")) {
console.log("app.vue 检查IM连接状态");
that.checkAndReconnectIM();
console.log("app.vue 是否调用");
that.initWyyx();
}
},
onHide: function () {
//
console.log("应用进入后台保持IM连接检测");
//
if (uni.$UIKitNIM && uni.$UIKitNIM.V2NIMLoginService) {
uni.$UIKitNIM.V2NIMLoginService.ping().then(() => {
console.log("后台心跳发送成功");
}).catch(err => {
console.error("后台心跳发送失败,准备重连", err);
this.reconnectIM();
});
}
},
onUnload() {
//
if (this.globalData.timer) {
clearInterval(this.globalData.timer);
this.globalData.timer = null;
console.log("定时器已清除");
}
if (this.globalData.reconnectTimer) {
clearInterval(this.globalData.reconnectTimer);
this.globalData.reconnectTimer = null;
console.log("定时任务已清除");
}
},
methods: {
// IM
checkAndReconnectIM() {
let that = this;
// SDK
setTimeout(() => {
if (uni.$UIKitNIM && uni.$UIKitStore) {
const connectStatus = uni.$UIKitStore.connectStore.connectStatus;
console.log('当前IM连接状态:', connectStatus);
//
// 0:
// 1:
// 2:
// 3:
if (connectStatus !== 2 && connectStatus !== 3) {
console.log("IM连接已断开尝试重连...");
that.reconnectIM();
}
} else if (uni.getStorageSync("apply-token") && uni.getStorageSync("apply-uid")) {
console.log("IM SDK未初始化重新初始化...");
that.initWyyx();
}
}, 1000);
},
// IM
reconnectIM() {
let that = this;
//
if (this.globalData.reconnectTimer) {
console.log("正在重连中,无需重复操作");
return;
}
//
const attemptReconnect = () => {
if (!uni.getStorageSync("apply-token") || !uni.getStorageSync("apply-uid")) {
console.log("用户未登录,停止重连");
clearInterval(that.globalData.reconnectTimer);
that.globalData.reconnectTimer = null;
return;
}
if (uni.$UIKitNIM && uni.$UIKitNIM.V2NIMLoginService) {
const account = uni.getStorageSync("im-accid");
const token = uni.getStorageSync("im-token");
if (account && token) {
console.log(`尝试重连IM (account: ${account})`);
uni.$UIKitNIM.V2NIMLoginService.login(account, token)
.then(() => {
console.log("IM重连成功");
clearInterval(that.globalData.reconnectTimer);
that.globalData.reconnectTimer = null;
})
.catch((error) => {
console.error("IM重连失败将再次尝试", error);
});
} else {
console.log("重连信息不全重新初始化IM");
that.initWyyx();
}
} else {
console.log("SDK未初始化重新初始化IM");
that.initWyyx();
}
};
//
attemptReconnect();
// 510
let reconnectAttempts = 0;
this.globalData.reconnectTimer = setInterval(() => {
reconnectAttempts++;
if (reconnectAttempts >= 10) {
console.log("重连尝试次数已达上限,停止重连");
clearInterval(that.globalData.reconnectTimer);
that.globalData.reconnectTimer = null;
return;
}
attemptReconnect();
}, 5000);
},
initWyyx() {
let that = this;
@ -219,46 +114,36 @@ export default {
},
(res) => {
console.log("wyyx_getConfig", res);
//
if (!res || !res.appKey || !res.accid || !res.token) {
console.error("获取IM配置失败参数不完整");
return;
}
let resData = {
appkey: res.appKey,
accid: res.accid,
token: res.token,
};
// IM
uni.setStorageSync('im-appkey', resData.appkey);
uni.setStorageSync('im-accid', resData.accid);
uni.setStorageSync('im-token', resData.token);
const imOptions = {
appkey: resData.appkey,
account: resData.accid,
token: resData.token,
appkey: resData.appkey, // appkey
account: resData.accid, // account
token: resData.token, // token
// appkey: "7e19d679085266aa872a8de12f0c1ae5", // appkey
// account: "9", // account
// token: "2d4ca36cca6293cf3a81d6ca1b8026f7", // token
};
if (imOptions) {
this.initNim(imOptions);
} else {
// ,
}
}
);
},
async initNim(opts) {
let that = this;
// nim sdk
// nim sdk
const nim = (uni.$UIKitNIM = V2NIM.getInstance(
{
appkey: opts.appkey,
needReconnect: true,
reconnectionAttempts: 10, //
reconnectionDelay: 3000, // 3
heartbeatInterval: 20000, // 20
debugLevel: "warn", // 便
// "reconnectionAttempts": 5,
debugLevel: "error",
apiVersion: "v2",
enableV2CloudConversation: true,
},
@ -266,8 +151,10 @@ export default {
V2NIMLoginServiceConfig: {
lbsUrls: isWxApp ? ["https://lbs.netease.im/lbs/wxwebconf.jsp"] : ["https://lbs.netease.im/lbs/webconf.jsp"],
linkUrl: isWxApp ? "wlnimsc0.netease.im" : "weblink.netease.im",
isFixedDeviceId: true, // 使ID
autoLogin: true, //
/**
* 使用固定设备 ID
*/
isFixedDeviceId: true,
},
}
));
@ -279,7 +166,9 @@ export default {
nim,
{
addFriendNeedVerify: false,
// p2p p2p false
p2pMsgReceiptVisible: true,
// false
teamMsgReceiptVisible: true,
teamAgreeMode: V2NIMConst.V2NIMTeamAgreeMode.V2NIM_TEAM_AGREE_MODE_NO_AUTH,
sendMsgBefore: async (options: { msg: V2NIMMessage; conversationId: string; serverExtension?: Record<string, unknown> }) => {
@ -289,6 +178,8 @@ export default {
});
const yxAitMsg = options.serverExtension ? options.serverExtension.yxAitMsg : { forcePushIDsList: "[]", needForcePush: false };
// at 线
const { forcePushIDsList, needForcePush } = yxAitMsg
? // @ts-ignore
store.msgStore._formatExtAitToPushInfo(yxAitMsg, options.msg.text)
@ -301,21 +192,26 @@ export default {
const targetId = nim.V2NIMConversationIdUtil.parseConversationTargetId(conversationId);
const pushPayload = JSON.stringify({
// oppo
oppoField: {
click_action_type: 4,
click_action_activity: "",
click_action_type: 4, // oppo
click_action_activity: "", // TODO
action_parameters: {
sessionId: targetId,
sessionType: conversationType,
}, //
},
},
// vivo
vivoField: {
pushMode: 0,
pushMode: 0, //0 1 0
},
// huawei
hwField: {
click_action: {
type: 1,
action: "",
action: "", // TODO
},
androidConfig: {
category: "IM",
@ -325,6 +221,8 @@ export default {
}),
},
},
//
sessionId: targetId,
sessionType: conversationType,
});
@ -345,16 +243,6 @@ export default {
"UniApp"
));
//
nim.V2NIMLoginService.on("onConnectStatusChanged", (status) => {
console.log("IM连接状态变化:", status);
// 1
if (status === 1) {
console.log("检测到连接断开,触发重连");
that.reconnectIM();
}
});
// #ifdef APP-PLUS
const nimPushPlugin = uni.requireNativePlugin("NIMUniPlugin-PluginModule");
nim.V2NIMSettingService.setOfflinePushConfig(nimPushPlugin, {
@ -376,56 +264,41 @@ export default {
certificateName: "rongyaoCertificateName",
},
apns: {
certificateName: "AuthKey_98P8URRXUD",
// certificateName: 'AuthKey_98P8URRXUD_test', //:
certificateName: "AuthKey_98P8URRXUD", //
},
});
console.log("推送配置已设置");
console.log("是否执行 推送");
// #endif
// IM
nim.V2NIMLoginService.login(opts.account, opts.token)
.then(() => {
console.log("IM登录成功");
//
if (that.globalData.reconnectTimer) {
clearInterval(that.globalData.reconnectTimer);
that.globalData.reconnectTimer = null;
}
})
.catch((error) => {
console.error("IM登录失败", error);
//
that.reconnectIM();
});
nim.V2NIMLoginService.login(opts.account, opts.token).then(() => {});
//
nim.V2NIMConversationService.on("onConversationChanged", function (conversationList: V2NIMConversation[]) {
console.log("初始化监听会话:", conversationList);
let unreadConversations = conversationList.filter((item) => {
let _bool = conversationList.filter((item) => {
return Number(item.unreadCount) > 0;
});
console.log("未读会话数量:", unreadConversations.length);
if (unreadConversations.length > 0) {
that.playAudio();
console.log("初始化监听会话bool:", _bool);
if (_bool && _bool.length > 0) {
that.playAudio(); //
}
});
},
playAudio() {
let that = this;
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = "https://matripe-cms.oss-cn-beijing.aliyuncs.com/ibocai/tip.mp3";
innerAudioContext.onPlay(() => {
console.log("开始播放提示音");
console.log("开始播放");
});
uni.vibrateShort();
innerAudioContext.onError((res) => {
console.log("提示音播放错误:", res.errMsg, res.errCode);
console.log(res.errMsg);
console.log(res.errCode);
});
},
checkNum() {
let that = this;
if (uni.getStorageSync("apply-token")) {
@ -437,14 +310,14 @@ export default {
index: 2,
text: String(res.approvePassHasNotRed+ applyNum),
fail(err) {
console.log("设置tabBar徽章失败:", err);
console.log("err", err);
},
});
} else {
uni.removeTabBarBadge({
index: 2,
fail(err) {
console.log("移除tabBar徽章失败:", err);
console.log("err", err);
},
});
}
@ -460,14 +333,15 @@ export default {
@import "./static/css/iconfont.css";
@import "./uni_modules/vk-uview-ui/index.scss";
@import "./static/css/base.scss";
// @import "./static/font/iconfont-weapp-icon.css";
// #ifdef MP-WEIXIN
page {
width: 100vw;
height: 100vh;
}
// #endif
// #endif
// #ifdef H5 || APP-PLUS || MP-TOUTIAO || MP-KUAISHOU
page {
width: 100vw;
@ -478,6 +352,7 @@ page {
--color-027: #ff4400;
--color-href: #576b95;
}
// #endif
// uview

Loading…
Cancel
Save