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

Loading…
Cancel
Save