更新记录
1.1.4(2025-07-18)
限时促销:0.1元 (截止8月30日),本插件为UTS插件,支持UniappX
包含以下功能:
iOS KeyChain管理器(钥匙串) 读取、写入、删除
鸿蒙AssetStoreKit管理器(资产管理器) 读取、写入、删除
安卓、iOS、鸿蒙 唯一ID生成和存储(一般用于游客登录,或记住用户名、密码)
支持 iOS、鸿蒙 通用的持久化保存方案,即卸载重装后依然可以读取卸载前保存的数据。
1、增加对鸿蒙的支持
2、增加 安卓、iOS、鸿蒙 生成唯一ID并持久保存的案例。
3、安卓唯一ID:安卓不支持持久化保存,但可以直接获取 AndroidID 作为 UUID【无需额外权限】
4、iOS唯一ID:通过时间戳+随机16进制数生成,生成后保存到钥匙串中【无需额外权限,无需IDFA(广告标识符)、IDFV权限。传统方式使用IDFA/IDFV/设备id 作为游客登陆 有审核风险】
5、鸿蒙唯一ID:通过时间戳+随机16进制数生成,生成后保存到AssetStore中【需要STORE_PERSISTENT_DATA权限,已声明在插件中】
1.1.3(2025-07-18)
限时促销:0.1元 (截止8月30日)
包含以下功能:
iOS KeyChain管理器(钥匙串) 读取、写入、删除
鸿蒙AssetStoreKit管理器(资产管理器) 读取、写入、删除
安卓、iOS、鸿蒙 唯一ID生成和存储(一般用于游客登录,或记住用户名、密码)
支持 iOS、鸿蒙 通用的持久化保存方案,即卸载重装后依然可以读取卸载前保存的数据。
1、增加对鸿蒙的支持
2、增加 安卓、iOS、鸿蒙 生成唯一ID并持久保存的案例。
3、安卓唯一ID:安卓不支持持久化保存,但可以直接获取 AndroidID 作为 UUID【无需额外权限】
4、iOS唯一ID:通过时间戳+随机16进制数生成,生成后保存到钥匙串中【无需额外权限,无需IDFA(广告标识符)、IDFV权限。传统方式使用IDFA/IDFV/设备id 作为游客登陆 有审核风险】
5、鸿蒙唯一ID:通过时间戳+随机16进制数生成,生成后保存到AssetStore中【需要STORE_PERSISTENT_DATA权限,已声明在插件中】
1.1.2(2025-07-18)
限时促销:0.1元 (截止8月30日)
包含以下功能:
iOS KeyChain管理器(钥匙串) 读取、写入、删除
鸿蒙AssetStoreKit管理器(资产管理器) 读取、写入、删除
安卓、iOS、鸿蒙 唯一ID生成和存储(一般用于游客登录,或记住用户名、密码)
支持 iOS、鸿蒙 通用的持久化保存方案,即卸载重装后依然可以读取卸载前保存的数据。
1、增加对鸿蒙的支持
2、增加 安卓、iOS、鸿蒙 生成唯一ID并持久保存的案例。
3、安卓唯一ID:安卓不支持持久化保存,但可以直接获取 AndroidID 作为 UUID【无需额外权限】
4、iOS唯一ID:通过时间戳+随机16进制数生成,生成后保存到钥匙串中【无需额外权限,无需IDFA(广告标识符)、IDFV权限。传统方式使用IDFA/IDFV/设备id 作为游客登陆 有审核风险】
5、鸿蒙唯一ID:通过时间戳+随机16进制数生成,生成后保存到AssetStore中【需要STORE_PERSISTENT_DATA权限,已声明在插件中】
查看更多
平台兼容性
云端兼容性
uni-app x(4.75)
Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
× |
× |
- |
√ |
√ |
× |
aper-keychainmanager
使用文档
import { key_LoadText,key_SaveText,key_Delete,gen_UUID } from '@/uni_modules/aper-keychainmanager'
//导入要用到的函数
let myuuid = gen_UUID();//随机生成uuid
let savesuccess = key_SaveText("myuuid",uuid);//将 生成的uuid 保存到myuuid
let username = key_LoadText("myuuid");//读取 myuuid的内容
let delsuccess = key_Delete("myuuid");//删除 myuuid
使用示例
<template>
<view>
<image class="logo" src="/static/logo.png"></image>
<view v-if="isiOS || isHarmony">
<text class="title">持久化存储,卸载重装也不影响</text>
<text class="info">支持 iOS(采用Keychain)</text>
<text class="info">支持 鸿蒙(采用AssetStore)</text>
<text class="info">测试JSON: {{testjson01}}</text>
<text class="info">用户名: {{username}}</text>
<text class="info">密码: {{password}}</text>
<button class="btn" @click="savekey">保存</button>
<button class="btn" @click="deletekey">删除</button>
</view>
<text class="title">唯一ID解决方案,卸载重装也不影响:</text>
<text class="info">支持 iOS(采用Keychain)</text>
<text class="info">支持 鸿蒙(采用AssetStore)</text>
<text class="info">支持 安卓(读取AndroidID)</text>
<button class="btn" @click="genid">生成唯一ID并存储</button>
<text class="title" >唯一ID: {{myuuid}}</text>
</view>
</template>
<script>
// #ifdef APP-ANDROID
import { gen_UUID } from '@/uni_modules/aper-keychainmanager'
// #endif
// #ifdef APP-HARMONY || APP-IOS
import { key_LoadText,key_SaveText,key_Delete,gen_UUID } from '@/uni_modules/aper-keychainmanager'
// #endif
export default {
data() {
return {
testjson01: '',
username: '',
password: '',
myuuid: '',
}
},
onLoad() {
setInterval(()=>{this.readkey()},1000)
},
computed: {
isiOS() : boolean {
// #ifdef APP-IOS
return true
// #endif
return false
},
isHarmony() : boolean {
// #ifdef APP-HARMONY
return true
// #endif
return false
},
isAndroid() : boolean {
// #ifdef APP-ANDROID
return true
// #endif
return false
},
},
methods: {
//读取
readkey(){
// #ifdef APP-ANDROID
this.genid();
return
// #endif
// #ifdef APP-HARMONY || APP-IOS
this.myuuid = key_LoadText("myuuid");
this.testjson01 = key_LoadText("testjson01");
//不存在则返回空字符串
this.username = key_LoadText("username");
this.password = key_LoadText("password");
console.log(this.myuuid,this.testjson01,this.username,this.password);
// #endif
},
//保存
savekey(){
//需要注意的是:
// key长度不能超过256字节
// text长度不能超过1024字节
// #ifdef APP-HARMONY || APP-IOS
if(key_SaveText("testjson01",`{"hello":"world","testarr":[1,2,3,4]}`)){
console.log("测试JSON 保存成功")
}else{
console.log("测试JSON 保存失败")
}
//两个参数分别是 :key,value
key_SaveText("username","testuser");
key_SaveText("password","testpass");
this.simpleToast("保存完成!卸载app也不会失效哦")
// #endif
},
//删除
deletekey(){
// #ifdef APP-HARMONY || APP-IOS
if(key_Delete("testjson01")){
console.log("测试JSON 删除成功")
}else{
console.log("测试JSON 删除失败")
}
key_Delete("username")
key_Delete("password")
this.simpleToast("删除完成,读取试试呢!")
// #endif
},
//##########################################
//生成唯一ID
genid(){
// #ifdef APP-ANDROID
//安卓 解决方案:直接获取AndroidID
this.myuuid = gen_UUID();
return
// #endif
// #ifdef APP-HARMONY || APP-IOS
//iOS、鸿蒙 解决方案:通过13位时间戳 + 随机数产生UUID,重复概率很低,无需任何权限。UUID通过KeyMan保存到手机中持久化存储。
const uuid = gen_UUID();
if(!key_Delete("myuuid")){//先删除之前保存的
this.simpleToast("唯一ID更新失败,请重试")
}
if(key_SaveText("myuuid",uuid)){
this.simpleToast("唯一ID已生成,卸载重装试试吧。")
}
// #endif
},
simpleToast(text:string){
uni.showToast({
title: text,
duration: 2000
});
}
}
}
</script>
<style>
.logo {
height: 80px;
width: 80px;
margin: 80px auto 25px auto;
}
.title {
font-size: 18px;
color: #8f8f94;
text-align: center;
margin-top: 15px;
}
.info{
text-align: center;
}
.btn{
margin: 5px;
}
</style>
权限
安卓 无
苹果 无
鸿蒙 ohos.permission.STORE_PERSISTENT_DATA (已声明在UTS插件中,无需额外声明,不会弹窗请求权限)