uni-app 使用 Hbuilderx4.32 版本 离线打包iosapp 首次安装打开时 调用uni.getLocation不展示定位授权弹框也无任何响应

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

uni-app 使用 Hbuilderx4.32 版本 离线打包iosapp 首次安装打开时 调用uni.getLocation不展示定位授权弹框也无任何响应

开发环境 版本号 项目创建方式
Windows HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

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

HBuilderX类型:正式

HBuilderX版本号:4.32

手机系统:iOS

手机系统版本号:iOS 18

手机厂商:苹果

手机机型:ipone12pro

页面类型:vue

vue版本:vue3

打包方式:离线

示例代码:
```cpp
uni.getLocation({
type: 'gcj02',
geocode: true, //设置该参数为true可直接获取经纬度及城市信息
altitude: true,
success: function(res:any) {
//
},
fail: function(err:any) {
//
}
)

操作步骤:

Hbuilderx4.32-alpha 版本 离线打包ios app,在iOS18 手机上,app首次安装 打开后, 调用uni.getLocation 不展示定位授权弹框,也无任何反应。在设置那里也看不到app的定位权限。


预期结果:

ios首次安装 打开后, 调用uni.getLocation 展示定位授权弹框,授权后获取到经纬度、地址信息。

实际结果:

在首次安装 打开后, 调用uni.getLocation 不展示定位授权弹框,也无任何回调反应


bug描述:

iOS18 手机,Hbuilderx4.32-alpha 版本 离线打包ios  app,在app首次安装 打开后, 调用uni.getLocation 不展示定位授权弹框,也无任何反应。在设置那里也看不到app的定位权限。

3 回复

使用的是系统定位,ios 需要配置的sdk文件也全部放了进去,不知道什么原因,安装到苹果手机上,授权弹框就拉不起来。


最近发布的包也遇到这个问题了。。。。

在uni-app中使用HBuilderX进行离线打包iOS应用时,如果在首次安装并打开应用时调用uni.getLocation没有展示定位授权弹框且无任何响应,通常是由于定位权限的申请流程没有正确执行或者相关的配置缺失。以下是一些可能的解决方案,包括代码示例和配置文件调整。

1. 确保iOS项目配置正确

首先,确保在manifest.json中配置了必要的权限:

"mp-weixin": { // 示例配置,实际应针对ios平台配置
    "requiredPrivateInfos": ["getUserInfo", "getLocation"]
},
"app-plus": {
    "distribute": {
        "ios": {
            "plist": {
                "NSLocationAlwaysUsageDescription": "App需要您的位置信息以提供定位服务",
                "NSLocationWhenInUseUsageDescription": "App需要您的位置信息以提供定位服务"
            }
        }
    }
}

注意:上述plist配置应在manifest.jsonapp-plus -> distribute -> ios路径下正确设置,针对iOS应用的定位权限描述。

2. 检查代码中的定位调用

确保在调用uni.getLocation之前,应用已经正确初始化,并且是在用户交互(如按钮点击)后调用定位接口。示例代码如下:

Page({
    onLoad() {
        // 假设这是页面加载时的函数
    },
    onGetUserLocation() {
        uni.getLocation({
            type: 'gcj02', // 返回可以用于uni.openLocation的经纬度
            success: function (res) {
                console.log('当前位置:', res.latitude, res.longitude);
            },
            fail: function (err) {
                console.error('获取位置失败:', err);
            }
        });
    }
});

在HTML模板中,绑定一个按钮点击事件来触发定位:

<button bindtap="onGetUserLocation">获取位置</button>

3. 检查iOS项目设置

在HBuilderX中,打开iOS项目设置,确保定位权限已经被勾选。这通常在项目的“manifest.json”配置中完成,但在某些情况下,可能需要在Xcode中进一步检查和确认。

4. 调试和测试

  • 使用Xcode直接运行应用,查看控制台输出,检查是否有关于权限申请的错误信息。
  • 确保在真实设备上测试,模拟器可能无法正确模拟权限申请流程。

通过上述步骤,通常可以解决uni-app在iOS离线打包后首次安装打开时调用uni.getLocation不展示定位授权弹框的问题。如果问题依旧存在,建议检查HBuilderX和uni-app的官方文档,以及社区论坛和GitHub Issues,看是否有其他开发者遇到并解决了类似问题。

回到顶部