Browse Source

feat:兼容安卓和ios

master
xsx 2 years ago
parent
commit
0fbee8e93b
  1. 2
      im-ui/package.json
  2. 13
      im-uniapp/App.vue
  3. 6
      im-uniapp/common/request.js
  4. 14
      im-uniapp/common/wssocket.js
  5. 7
      im-uniapp/components/file-upload/file-upload.vue
  6. 4
      im-uniapp/components/image-upload/image-upload.vue
  7. 1
      im-uniapp/main.js
  8. 51
      im-uniapp/manifest.json
  9. 1
      im-uniapp/pages.json
  10. 11
      im-uniapp/pages/chat/chat-box.vue
  11. 2
      im-uniapp/pages/group/group.vue
  12. 2
      im-uniapp/pages/login/login.vue

2
im-ui/package.json

@ -4,7 +4,7 @@
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {

13
im-uniapp/App.vue

@ -3,7 +3,8 @@
import http from './common/request';
import * as enums from './common/enums';
import * as wsApi from './common/wssocket';
import UNI_APP from '@/.env.js'
export default {
data() {
return {
@ -26,7 +27,7 @@
initWebSocket() {
let loginInfo = uni.getStorageSync("loginInfo")
wsApi.init();
wsApi.connect(process.env.WS_URL, loginInfo.accessToken);
wsApi.connect(UNI_APP.WS_URL, loginInfo.accessToken);
wsApi.onConnect(() => {
// 线
this.pullPrivateOfflineMessage(store.state.chatStore.privateMsgMaxId);
@ -49,15 +50,15 @@
}
});
wsApi.onClose((res) => {
// 3000
if (res.code != 3000) {
// 1000
if (res.code != 1000) {
//
uni.showToast({
title: '连接已断开,尝试重新连接...',
icon: 'none',
})
let loginInfo = uni.getStorageSync("loginInfo")
wsApi.reconnect(process.env.WS_URL, loginInfo.accessToken);
wsApi.reconnect(UNI_APP.WS_URL, loginInfo.accessToken);
}
})
},
@ -204,7 +205,7 @@
},
exit() {
console.log("exit");
wsApi.close();
wsApi.close(1000);
uni.removeStorageSync("loginInfo");
uni.reLaunch({
url: "/pages/login/login"

6
im-uniapp/common/request.js

@ -1,3 +1,5 @@
import UNI_APP from '@/.env.js'
// 请求队列
let requestList = [];
// 是否正在刷新中
@ -11,7 +13,7 @@ const request = (options) => {
}
return new Promise(function(resolve, reject) {
uni.request({
url: process.env.BASE_URL + options.url,
url: UNI_APP.BASE_URL + options.url,
method: options.method || 'GET',
header: header,
data: options.data || {},
@ -71,7 +73,7 @@ const reqRefreshToken = (loginInfo) => {
return new Promise(function(resolve, reject) {
uni.request({
method: 'PUT',
url: process.env.BASE_URL + '/refreshToken',
url: UNI_APP.BASE_URL + '/refreshToken',
header: {
refreshToken: loginInfo.refreshToken
},

14
im-uniapp/common/wssocket.js

@ -46,17 +46,15 @@ let init = () => {
uni.onSocketClose((res) => {
console.log('WebSocket连接关闭')
isConnect = false; //断开后修改标识
isConnect = false;
closeCallBack && closeCallBack(res);
})
uni.onSocketError((e) => {
console.log(e)
isConnect = false; //连接断开修改标识
uni.showModal({
content: '连接失败,可能是websocket服务不可用,请稍后再试',
showCancel: false,
})
isConnect = false;
// APP 应用切出超过一定时间(约1分钟)会触发报错,此处回调给应用进行重连
closeCallBack && closeCallBack({code: 1006});
})
};
@ -95,12 +93,12 @@ let reconnect = (wsurl, accessToken) => {
};
//设置关闭连接
let close = () => {
let close = (code) => {
if (!isConnect) {
return;
}
uni.closeSocket({
code: 3000,
code: code,
complete: (res) => {
console.log("关闭websocket连接");
isConnect = false;

7
im-uniapp/components/file-upload/file-upload.vue

@ -5,6 +5,8 @@
</template>
<script>
import UNI_APP from '@/.env.js';
export default {
name: "file-upload",
data() {
@ -34,8 +36,9 @@
},
methods: {
selectAndUpload() {
console.log(uni.chooseFile)
console.log(uni.chooseMessageFile)
let chooseFile = uni.chooseFile || uni.chooseMessageFile;
console.log(chooseFile)
chooseFile({
success: (res) => {
res.tempFiles.forEach((file) => {
@ -56,7 +59,7 @@
},
uploadFile(file) {
uni.uploadFile({
url: process.env.BASE_URL + '/file/upload',
url: UNI_APP.BASE_URL + '/file/upload',
header: {
accessToken: uni.getStorageSync("loginInfo").accessToken
},

4
im-uniapp/components/image-upload/image-upload.vue

@ -5,6 +5,8 @@
</template>
<script>
import UNI_APP from '@/.env.js'
export default {
name: "image-upload",
data() {
@ -65,7 +67,7 @@
},
uploadImage(file) {
uni.uploadFile({
url: process.env.BASE_URL + '/image/upload',
url: UNI_APP.BASE_URL + '/image/upload',
header: {
accessToken: uni.getStorageSync("loginInfo").accessToken
},

1
im-uniapp/main.js

@ -5,7 +5,6 @@ import * as enums from './common/enums.js';
import * as date from './common/date';
import * as socketApi from './common/wssocket';
import store from './store';
import { createSSRApp } from 'vue'
export function createApp() {

51
im-uniapp/manifest.json

@ -1,5 +1,5 @@
{
"name" : "im-uniapp",
"name" : "盒子IM",
"appid" : "__UNI__69DD57A",
"description" : "",
"versionName" : "1.0.0",
@ -17,7 +17,9 @@
"delay" : 0
},
/* */
"modules" : {},
"modules" : {
"Camera" : {}
},
/* */
"distribute" : {
/* android */
@ -38,12 +40,51 @@
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"minSdkVersion" : 21
},
/* ios */
"ios" : {},
"ios" : {
"dSYMs" : false
},
/* SDK */
"sdkConfigs" : {}
"sdkConfigs" : {
"ad" : {},
"speech" : {}
},
"icons" : {
"android" : {
"xhdpi" : "unpackage/res/icons/96x96.png",
"hdpi" : "unpackage/res/icons/72x72.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png",
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png"
},
"iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png"
}
}
}
}
},
/* */

1
im-uniapp/pages.json

@ -1,4 +1,5 @@
{
"lazyCodeLoading":"requiredComponents",
"pages": [{
"path": "pages/login/login"
}, {

11
im-uniapp/pages/chat/chat-box.vue

@ -58,6 +58,8 @@
</image-upload>
<view class="tool-name">拍摄</view>
</view>
<!-- #ifndef APP-PLUS -->
<!-- APP 暂时不支持选择文件 -->
<view class="chat-tools-item">
<file-upload :onBefore="onUploadFileBefore" :onSuccess="onUploadFileSuccess"
:onError="onUploadFileFail">
@ -65,6 +67,7 @@
</file-upload>
<view class="tool-name">文件</view>
</view>
<!-- #endif -->
<view class="chat-tools-item" @click="showTip()">
<view class="tool-icon iconfont icon-microphone"></view>
<view class="tool-name">语音输入</view>
@ -113,6 +116,7 @@
},
methods: {
showTip() {
uni.showToast({
title: "暂未支持...",
icon: "none"
@ -723,17 +727,16 @@
.chat-tools {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.chat-tools-item {
width: 140rpx;
padding: 15rpx;
padding: 16rpx;
display: flex;
flex-direction: column;
align-items: center;
.tool-icon {
padding: 15rpx;
padding: 18rpx;
font-size: 80rpx;
background-color: white;
border-radius: 20%;

2
im-uniapp/pages/group/group.vue

@ -14,7 +14,7 @@
<view class="group-items" v-else>
<scroll-view class="scroll-bar" scroll-with-animation="true" scroll-y="true">
<view v-for="group in $store.state.groupStore.groups" :key="group.id">
<group-item :group="group"></group-item>
<group-item v-if="!group.quit" :group="group"></group-item>
</view>
</scroll-view>
</view>

2
im-uniapp/pages/login/login.vue

@ -47,6 +47,8 @@
method: 'POST'
}).then(data => {
console.log("登录成功,自动跳转到聊天页面...")
uni.setStorageSync("userName", this.loginForm.userName);
uni.setStorageSync("password", this.loginForm.password);
uni.setStorageSync("loginInfo", data);
// App.vue
getApp().init()

Loading…
Cancel
Save