You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
6.0 KiB
Vue

8 months ago
<script lang="ts">
import RootStore from "@xkit-yx/im-store-v2";
import V2NIM, { V2NIMConst } from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK";
import {
customRedirectTo,
customReLaunch,
customSwitchTab,
} from "./pages/NEUIKit/utils/customNavigate";
import { getMsgContentTipByType } from "./pages/NEUIKit/utils/msg";
import { STORAGE_KEY } from "./pages/NEUIKit/utils/constants";
import { isWxApp } from "./pages/NEUIKit/utils";
import {
V2NIMMessage,
V2NIMMessagePushConfig,
} from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK/V2NIMMessageService";
8 months ago
export default {
8 months ago
onLaunch() {
// uni.request({
// url: 'http://192.168.3.83:8001/wyyx/startSessionJson',
// data: {
// fromUser: 'test_user_001',
// toUser: 'test_user_002'
// },
// timeout:60000,
// method: 'POST',
// success: (res) => {
// let resData = {
// appkey: "146010bdfe390e4893c854f0c50b4214",
// accid :'test_user_001',
// token : 'f1257138ccbb48e667bc56b2d792aeb3'
// }
let resData = {
8 months ago
appkey: "5beb4f3ad30ecbd876018a3798ab57a6",
8 months ago
accid :'test_user_002',
8 months ago
token : '94fa9f4e72f8434f41d747111c76ab9e'
8 months ago
}
// let resData = {
// appkey: "146010bdfe390e4893c854f0c50b4214",
// accid :'test_user_003',
// token : '4f77d3e55715f7e7355508a74d2a0dfe'
// }
// let resData = res.data.data;
const imOptions = {
appkey: resData.appkey, // 请填写您的 appkey
account: resData.accid, // 请填写您的 account
token: resData.token, // 请填写您的 token
}
if (imOptions) {
this.initNim(imOptions);
} else {
// 需要登录, 跳转登录页
}
// },
// fail (error) {
// }
// });
},
methods: {
initNim(opts) {
// 初始化 nim sdk
const nim = (uni.$UIKitNIM = V2NIM.getInstance(
{
appkey: opts.appkey,
needReconnect: true,
// "reconnectionAttempts": 5,
debugLevel: "debug",
apiVersion: "v2",
},
{
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",
/**
* 使用固定设备 ID
*/
isFixedDeviceId: true,
},
}
));
// 初始化 store
const store = (uni.$UIKitStore = new RootStore(
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>;
}) => {
const pushContent = getMsgContentTipByType({
text: options.msg.text,
messageType: options.msg.messageType,
});
const yxAitMsg = options.serverExtension
? options.serverExtension.yxAitMsg
: { forcePushIDsList: "[]", needForcePush: false };
8 months ago
8 months ago
// 如果是 at 消息,需要走离线强推
8 months ago
8 months ago
const { forcePushIDsList, needForcePush } = yxAitMsg
? // @ts-ignore
store.msgStore._formatExtAitToPushInfo(
yxAitMsg,
options.msg.text
)
: { forcePushIDsList: "[]", needForcePush: false };
8 months ago
8 months ago
console.log("forcePushIDsList: ", forcePushIDsList);
8 months ago
8 months ago
const { conversationId } = options;
const conversationType =
nim.V2NIMConversationIdUtil.parseConversationType(conversationId);
const targetId =
nim.V2NIMConversationIdUtil.parseConversationTargetId(
conversationId
);
8 months ago
8 months ago
const pushPayload = JSON.stringify({
// oppo
oppoField: {
click_action_type: 4, // 参考 oppo 官网
click_action_activity: "", // 各端不一样 TODO
action_parameters: {
sessionId: targetId,
sessionType: conversationType,
}, // 自定义
},
8 months ago
8 months ago
// vivo
vivoField: {
pushMode: 0, //推送模式0 表示正式推送、1 表示测试推送。不填则默认为 0。
},
8 months ago
8 months ago
// huawei
hwField: {
click_action: {
type: 1,
action: "", // 各端不一样 TODO
},
androidConfig: {
category: "IM",
data: JSON.stringify({
sessionId: targetId,
sessionType: conversationType,
}),
},
},
// 通用
sessionId: targetId,
sessionType: conversationType,
});
const pushConfig: V2NIMMessagePushConfig = {
pushEnabled: true,
pushNickEnabled: true,
forcePush: needForcePush,
forcePushContent: pushContent,
forcePushAccountIds: forcePushIDsList,
pushPayload: "{}",
pushContent,
};
8 months ago
8 months ago
return { ...options, pushConfig };
},
},
"UniApp"
));
nim.V2NIMLoginService.login(opts.account, opts.token).then(() => {
customSwitchTab({
url: "/pages/Conversation/index",
});
});
},
logout() {
},
},
};
</script>
8 months ago
<style lang="scss">
8 months ago
@import "./uni_modules/vk-uview-ui/index.scss";
8 months ago
uni-page-body {
height: 100%;
8 months ago
}
8 months ago
uni-page-body > uni-view {
height: 100%;
8 months ago
}
</style>