uni-app uni.getLocation云打包后ios端获取不到定位授权及更新APP后白屏问题

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app uni.getLocation云打包后ios端获取不到定位授权及更新APP后白屏问题

开发环境 版本号 项目创建方式
Mac macos 10.15.7 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:macos 10.15.7

HBuilderX类型:Alpha

HBuilderX版本号:4.32

手机系统:iOS

手机系统版本号:iOS 15

手机厂商:苹果

手机机型:iphone 11pro max

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

uni.getLocation({  
  type: "gcj02",  
  isHighAccuracy: true,  
  success(res) {  
    console.log(res)  
  },  
  fail(err) {  
    console.error('获取失败', err)  
  },  
  complete(data) {  
    console.log('-定位完成-',data);  
  }  
})

操作步骤: ios真机调试,可以申请到位置权限,云打包后申请不到相应权限
ios,进入应用获取定位信息,没有获取定位授权提醒,也获取不到定位信息。ios APP 更新后也会有白屏情况

预期结果: 进入应用,可正常获取定位授权,app更新后进入页面不显示白屏。

实际结果: ios,进入应用获取定位信息,没有获取定位授权提醒,也获取不到定位信息。ios APP 更新后也会有白屏情况

bug描述: uni.getLocation本地真机调试时可以获申请到定位授权以及定位信息,云打包(传统打包)后,安装到真机上,申请不到定位授权及定位信息


2 回复

项目配置文件,已配置了权限说明及定位权限; 上周五(2024-10-31)之前打包都是可以用的,周五之后打包就出现这个问题了。



针对您提到的uni-app在云打包后iOS端获取不到定位授权以及更新APP后白屏的问题,这里提供一些可能的解决方案和相关代码案例。请注意,由于我无法直接访问您的项目代码和环境,以下建议仅供参考,具体实现可能需要您根据实际情况进行调整。

1. iOS端获取不到定位授权问题

首先,确保您的manifest.json文件中已经配置了必要的权限:

"mp-weixin": {
  "requiredPrivateInfos": ["getUserInfo", "getLocation"]
},
"app-plus": {
  "distribute": {
    "ios": {
      "plist": [
        {
          "key": "NSLocationWhenInUseUsageDescription",
          "string": "需要您的位置信息以提供周边服务"
        },
        {
          "key": "NSLocationAlwaysUsageDescription",
          "string": "需要您的位置信息以提供持续服务"
        }
      ]
    }
  }
}

在代码中,您可以通过以下方式请求定位权限:

uni.getLocation({
  type: 'gcj02', // 坐标系
  success: function (res) {
    console.log('位置信息:', res);
  },
  fail: function (err) {
    console.error('获取位置失败:', err);
    if (err.code === 1) {
      uni.authorize({
        scope: 'scope.userLocation',
        success: function () {
          // 重新请求定位
          uni.getLocation({
            type: 'gcj02',
            success: function (res) {
              console.log('重新请求位置信息:', res);
            }
          });
        },
        fail: function () {
          console.error('用户拒绝授权获取位置');
        }
      });
    }
  }
});

2. 更新APP后白屏问题

白屏问题可能由多种原因引起,以下是一些常见的检查点:

  • 确保您的manifest.json中的app-plus配置正确,特别是versionname等关键信息。
  • 检查您的项目依赖是否完整,特别是与iOS相关的依赖库。
  • App.vueonLaunchonShow生命周期函数中,添加错误捕获逻辑,以便在启动时捕获并处理可能的错误。
export default {
  onLaunch: function () {
    try {
      // 初始化代码
    } catch (error) {
      console.error('App启动错误:', error);
      uni.showToast({
        title: '启动失败,请重试',
        icon: 'none'
      });
    }
  }
}
  • 如果问题依旧存在,尝试清除iOS设备的缓存或重新安装APP。

希望这些建议能帮助您解决问题。如果问题依然存在,建议详细检查控制台日志,以便获取更具体的错误信息。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!