//存储数据 import AsyncStorage from "@react-native-async-storage/async-storage"; //查看系统版本、机型、设备类型 import * as Device from "expo-device"; import { Platform } from "react-native"; // { // "b_mid": 111, // 用户id // "b_did": "xxx", // 设备id // "b_ver": "1.0.0", // 版本 // "b_osver": "4.0.0", // 系统版本 // "b_dt": 0, // 设备类型 // "b_ch": "xiaomi", //渠道 // "b_model": "xiaomi 13", // 机型 // "b_nt": 0, // 网络类型 // 0: wifi, 1: 流量 // "b_ts": 1, // 请求时间戳,毫秒级 // "b_token": "xxxx", // 请求令牌 // "b_loc": { // "b_lon": 1.1, // 经度 // "b_lat": 1.1 // 纬度 // } // } //进入app时存储基本信息(b_did、b_ver、b_osver、b_dt、b_ch、b_model) export async function storeAppInfo() { const Application = require("expo-application"); async function getDid() { const notFirstTimeOpenApp = await get("not_first_time_open_app"); if (Platform.OS === "android") { if (!notFirstTimeOpenApp) return ""; return Application.getAndroidId(); } else if (Platform.OS === "ios") { return await Application.getIosIdForVendorAsync(); } } const b_did = await getDid(); const b_ver = Application.nativeApplicationVersion; const b_dt = Platform.OS === "android" ? 0 : 1; const b_ch = "production"; const b_model = Device.modelName; const b_osver = Device.osVersion; const appInfo = { b_did: b_did, b_ver: b_ver, b_dt: b_dt, b_ch: b_ch, b_model: b_model, b_osver: b_osver, }; try { await AsyncStorage.setItem("app_info", JSON.stringify(appInfo)); } catch (e) { console.log(e); } } //保存数据 export async function save(key, value) { try { await AsyncStorage.setItem(key, JSON.stringify(value)); } catch (e) { console.log(e); } } //获取数据 export async function get(key) { try { return await AsyncStorage.getItem(key).then((value) => { const jsonValue = JSON.parse(value); return jsonValue; }); } catch (e) { console.log(e); } } //更新数据(不适用于数组) export async function update(key, newValue) { try { await AsyncStorage.getItem(key).then(async (oldValue) => { newValue = typeof newValue === "object" ? Object.assign({}, JSON.parse(oldValue), newValue) : newValue; await AsyncStorage.setItem(key, JSON.stringify(newValue)); }); } catch (e) { console.log(e); } } //移除数据 export async function remove(key) { try { await AsyncStorage.removeItem(key); } catch (e) { console.log(e); } } //向数组类型数据添加值 export async function addArr(key, newValue) { try { await AsyncStorage.getItem(key).then(async (oldValue) => { if (oldValue) { newValue = [...newValue, ...JSON.parse(oldValue)]; } else { newValue = [...newValue]; } await AsyncStorage.setItem(key, JSON.stringify(newValue)); }); } catch (e) { console.log(e); } } //清除当前账号的全部聊天记录 export async function clearMessagesCache(userMid) { try { const keys = await AsyncStorage.getAllKeys(); const userChatKeys = keys.filter((key) => key.startsWith(`${userMid}_to_`)); await AsyncStorage.multiRemove(userChatKeys); console.log(`用户 ${userMid} 的聊天记录已清除`); } catch (error) { console.error(error); } }