由现成的api可用,具体查看官网 系统信息的概念 | uni-app官网
uniapp 获取设备唯一标识信息
uniapp 获取安卓id 还可以获取更多信息 uniapp获取版本信息,设备信息,网络信息等
获取uuid,imei的方式已经不推荐,
下面是;我写一个uni-app的vue文件,获取手机设备的相关信息,系统名称,系统版本,设备型号,系统语言信息,网络类型,设备的唯一标识uuid(无法获取就随机生成一个唯一的),APP版本信息。并将信息保存到数据表
<template>
<view>
<text>设备信息</text>
<text>系统名称: {{ systemName }}</text>
<text>系统版本: {{ systemVersion }}</text>
<text>设备型号: {{ deviceModel }}</text>
<text>系统语言: {{ systemLanguage }}</text>
<text>网络类型: {{ networkType }}</text>
<text>安卓id: {{ deviceId }}</text>
<text>应用版本: {{ appVersion }}</text>
<button @click="saveDeviceInfo">保存设备信息</button>
</view>
</template>
<script>
export default {
data() {
return {
systemName: '',
systemVersion: '',
deviceModel: '',
systemLanguage: '',
networkType: '',
deviceId: '',
identifier: '',
appVersion: ''
};
},
methods: {
async getDeviceInfo() {
try {
// 获取系统信息
const systemInfo = uni.getSystemInfoSync();
this.systemName = systemInfo.system;
this.systemVersion = systemInfo.version;
this.deviceModel = systemInfo.model;
this.systemLanguage = systemInfo.language;
this.deviceId = systemInfo.deviceId;
this.appVersion = systemInfo.appVersion;
uni.getNetworkType({
success: (networkRes) => {
this.networkType = networkRes.networkType;
this.getAppAndDeviceInfo(); // 确保在这里调用以获取安卓ID和APP版本
},
fail: (error) => {
console.error('获取网络类型失败', error);
}
});
} catch (error) {
console.error('获取系统信息失败', error);
}
},
async saveDeviceInfo() {
try {
// 确保所有必要的信息都已经被获取
// (在实际应用中,你可能需要在调用此方法之前确保这些信息是可用的)
const apiUrl = '你的后台api';
const deviceInfo = {
systemName: this.systemName,
systemVersion: this.systemVersion,
deviceModel: this.deviceModel,
systemLanguage: this.systemLanguage,
networkType: this.networkType,
uuid: this.deviceId, // 使用deviceId作为唯一标识符
appVersion: this.appVersion,
};
// 注意:确保后端API能够接收JSON格式的数据,并且你的uni.request调用正确设置了Content-Type
const res = await uni.request({
url: apiUrl,
method: 'POST',
data: JSON.stringify(deviceInfo), // 如果后端需要JSON字符串,则使用JSON.stringify
header: {
'Content-Type': 'application/json'
},
success: (response) => {
if (response.statusCode === 200) {
uni.showToast({
title: '设备信息保存成功',
icon: 'success'
});
} else {
// 根据实际后端API的响应来处理错误情况
uni.showToast({
title: '设备信息保存失败,状态码:' + response.statusCode,
icon: 'none'
});
}
},
fail: (error) => {
console.error('保存设备信息请求失败', error);
uni.showToast({
title: '设备信息保存失败',
icon: 'none'
});
}
});
// 注意:上面的success和fail回调已经处理了响应和错误情况,
// 因此通常不需要在这里再次处理res变量(除非你有额外的逻辑需要处理)。
} catch (error) {
// 这个catch块主要捕获uni.request之外的异常,
// 但由于uni.request已经使用了自己的错误处理回调,
// 因此这里的catch块可能不会被触发(除非uni.request本身抛出异常)。
console.error('保存设备信息过程中发生未捕获的异常', error);
uni.showToast({
title: '设备信息保存过程中发生异常',
icon: 'none'
});
}
}
},
onLoad() {
this.getDeviceInfo();
_self = this;
sign.sign(this.apiServer);
}
};
</script>
<style scoped>
view {
padding: 20px;
}
text {
display: block;
margin: 10px 0;
}
button {
margin-top: 20px;
}
</style>