小工具知识网

当前位置: 首页 > 行业知识 > uniapp开发安卓跟ios所遇问题集合

行业知识

uniapp开发安卓跟ios所遇问题集合

2026-11-10 04:40:43 来源:互联网转载

Android平台配置CPU类型

一般勾选armeabi-v7a跟arm64-v8a就好了

  • armeabi-v7a 第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。
  • arm64-v8a 第8代、64位ARM处理器(ARM64位),最近两年新发的设备使用此CPU类型,可以兼容使用armeabi-v7a的so库。
  • x86 少部分平板使用x86,AS模拟器中选了intel x86时使用x86处理器,以及其它常用三方模拟器通常使用x86

    您的应用目前的目标 API 级别为 29,但其目标 API 级别必须最低为 30,这样才能确保应用基于最新 API 而构建

    应用配置文件,加 targetSdkVersion:"30"

    文档地址:uni-app官网

    文档地址:uni-app官网

    IOS隐私信息访问的许可描述

    Appstore审核要求App在调用如下涉及隐私的API时必须说明调用原因

    IOS自定义开屏启动界面

    官网示例:uni-app官网

    直接使用uniapp模板文件(点击下载)中提供的相对常用的 storyboard 模板,可在这个文件的基础上进行自定义图片,已经一些文本内容

    应用版本名称跟应用版本号

    在ios跟谷歌中上架,版本号需要不停的加一,不然无法上传到市场中

    app国际化默认语言设置

    一定要在这里设置

    let i18nConfig = {locale:  uni.getLocale(),messages}

    pages.json中设置 tabBar list中的国际化

    "tabBar": {"height": "50rpx",// 配置选中颜色"selectedColor": "#42dfbf","color": "#b0b3bf", // 设置为与背景颜色相同"backgroundColor": "white", // 设置为透明// list 每一项"list": [{"iconPath": "./static/img/tabbar/new.png","selectedIconPath": "./static/img/tabbar/new_sel.png","pagePath": "pages/message/message","text": "%nav.1%"}]}

    安卓跟ios下拉刷新效果

     pages.json

    {    "pages": [        {        "path": "pages/index/index",        "style": {        "navigationBarTitleText": "下拉刷新",        "enablePullDownRefresh": true        }        }    ]}

    index.vue

    export default {data() {return {text: '下拉刷新'}},onLoad: function (options) {        //开始下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致uni.startPullDownRefresh();},onPullDownRefresh() {       //一秒后停止刷新动画setTimeout(function () {uni.stopPullDownRefresh();}, 1000);}}

    iOS 取消底部的空白区域

    "safearea" : {            //安全区域配置,仅iOS平台生效              "bottom" : {                // 底部安全区域配置                  "offset" : "none" // 底部安全区域偏移,"none"表示不空出安全区域,"auto"自动计算空出安全区域,默认值为"none"              }        }

    app蓝牙开锁

    官网相关文档:uni-app官网

    先初始化蓝牙,然后开始搜寻蓝牙,开始搜寻后设置一个延时,超过一定时间取消搜寻 然后提示连接失败。如果找到了对应的设备,获取到设备信息,也关闭蓝牙搜寻。然后正式连接设备,连接成功设置uni.setBLEMTU 蓝牙最大传输单元,避免命令行太长无法传输到设备中。

    最后获取蓝牙设备所有服务,然后获取蓝牙设备某个服务中所有特征值,然后就可以写入命令了,一般是要将字符串转为二进制数据,也就是字节数据,我在这个踩了很久,附上我转换成功的代码

    function hexStringToArrayBuffer(str) {if (!str) {return new ArrayBuffer(0);}var buffer = new ArrayBuffer(str.length);let dataView = new DataView(buffer)for (let i = 0; i  

    完整代码: 

    uni.openBluetoothAdapter({ //首先初始化蓝牙success(res) {        console.log('1')uni.startBluetoothDevicesDiscovery({ //这里是开启蓝牙搜寻success: (res) => {console.log('2')setTimeout(() => {unlockingTimeout.push(setInterval(()=>{exceptionPrompt('未搜尋到藍牙鎖,可嘗試重新打開藍牙')claerUnlockingTimeout()uni.stopBluetoothDevicesDiscovery({ //当找到匹配的蓝牙后就关掉蓝牙搜寻success(res) {}})}, 25000))                            state.progressSta = truedrawCircle(item, index)}, 100)uni.onBluetoothDeviceFound((res) => { //这一步是监听返回的蓝牙设备     uni.getBluetoothDevices({    success: res => {    console.log('2.5',res.devices)    res.devices.forEach(device => { //这一步就是去筛选找到的蓝牙中    if (device.name == item.imei) {    uni.stopBluetoothDevicesDiscovery({ //当找到匹配的蓝牙后就关掉蓝牙搜寻    success(res) {    }    })    console.log('3',device.deviceId)    state.DeviceID = device.deviceId     state.deviceName = item.imei    uni.createBLEConnection({ //连接低功耗蓝牙设备    deviceId: state.DeviceID, //传入刚刚获取的uuid      success(res) {    console.log('4',state.DeviceID)    setTimeout(function() {    uni.setBLEMTU({    deviceId: state.DeviceID,    mtu: 300,    success(res) {    console.log('设置成功', res)    },    fail(err) {    console.log('设置失败', err)    }    })    }, 300)    setTimeout(function() {    uni.getBLEDeviceServices({ //获取蓝牙设备所有服务      deviceId: state.DeviceID,    success(res) {    console.log('5',res)    if (uni.getSystemInfoSync().platform == "ios") {    state.servicesList = res.services[0].uuid    }else{    state.servicesList = res.services[2].uuid    }    uni.getBLEDeviceCharacteristics({ //获取蓝牙设备某个服务中所有特征值      deviceId: state.DeviceID,    serviceId: state.servicesList,    success(res) {    console.log('6')    state.characteristicList = res.characteristics    uni.notifyBLECharacteristicValueChange({    state: true,    deviceId: state.DeviceID,    serviceId: state.servicesList,    characteristicId: state.characteristicList[2].uuid,    success(res) {    console.log('连接成功', res)    uni.onBLECharacteristicValueChange((res) => {    console.log(`characteristic ${JSON.stringify(res)} has changed`)    let hhh = ab2hex(res.value)    console.log("监听成功", hexCharCodeToStr(hhh))    })    setTimeout(() => {    sendInstruction(item)    }, 500)    },    fail(res) {    exceptionPrompt()    console.log(JSON.stringify(res))    }    })    },    fail(res) {    if (uni.getSystemInfoSync().platform == "ios") {    if(res.code == '10012'){    state.defeated = false    state.progressSta = false    state.progress = 0    state.lockhead = true    state.textSta = instance.proxy.$t('bluetooth.8')        messagePopup.value.showMessage('warn', '未找到設備,請重試')    }    }    console.log(JSON.stringify(res))    }    })    },    fail(res) {    exceptionPrompt()    console.log(JSON.stringify(res))    }    })    }, 1500)        },    fail(res) {    if(res.code == '10012'){    state.defeated = false    state.progressSta = false    state.progress = 0    state.lockhead = true    state.textSta = instance.proxy.$t('bluetooth.8')        messagePopup.value.showMessage('warn', '連接超時,請重試')    }    console.log(res)    }    })    }    })    },    fail: e => {    console.log(e)    }    });})}})},fail(res) {if (res.code == 10001) {messagePopup.value.showMessage('warn', "藍牙是否打開")} else {messagePopup.value.showMessage('warn', res.errMsg)}}})

    其他蓝牙开锁文章:uni-app蓝牙开锁篇 - DCloud问答

    uni-app使用蓝牙 - 伟衙内 - 博客园 (cnblogs.com)

    app中绘制图表

    uChar插件文档地址:uCharts官网 - 秋云uCharts跨平台图表库

    app实现国际化功能

    使用uni-hello-i18n,官方有示例

    示例地址:hello-i18n 示例工程 - DCloud 插件市场

    官方文档:uni-app官网 

    补充,国际化的繁体、简体跟英文一定要设置为 zh-Hant、zh-Hans、en 因为uniapp的内置插件会根据这个也进行国际化的切换

    import en from './en.json'import zhHans from './zh-Hans.json'import zhHant from './zh-Hant.json'export default {en,'zh-Hans': zhHans,'zh-Hant': zhHant}

    app二维码

    插件地址:uQRCode 全端二维码生成插件 支持nvue 支持nodejs服务端 - DCloud 插件市场

    import {reactive,ref,toRefs,getCurrentInstance,onMounted} from 'vue';export default {setup() {let qrcodeData = ref('')let uqrcode = ref(null)function saveQRCode() {uqrcode.value.save({success: () => {messagePopup.value.showMessage('success', instance.proxy.$t('otherMy.9'))}})}return {...toRefs(state),qrcodeData,saveQRCode,uqrcode};}};

     未完待续... ...

上一篇:服务器中怎么调整电脑性能?

下一篇:方舟服务器炮塔伤害怎么调?