uni-app app端webview跳转企业微信客服无法正常返回 app直接关闭

uni-app app端webview跳转企业微信客服无法正常返回 app直接关闭

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC版本号 14.0
HBuilderX 正式
HBuilderX版本 4.13
手机系统 Android
手机版本号 Android 14
手机厂商 小米
手机机型 小米k50
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

<template>
<view class="content">
<web-view src="https://work.weixin.qq.com/kfid/kfcdd3f5de2dfa7d234"></web-view>
</view>
</template>  
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {  
},  
methods: {  

}  
}
</script>  
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {  
height: 200rpx;  
width: 200rpx;  
margin-top: 200rpx;  
margin-left: auto;  
margin-right: auto;  
margin-bottom: 50rpx;  
}  
.text-area {  
display: flex;  
justify-content: center;  
}  
.title {  
font-size: 36rpx;  
color: #8f8f94;  
}  
</style>  

操作步骤:

运行到手机, 点击下面的客服选择客服2跳转微信;然后点击左上回退;或者左滑后退

预期结果:

点击返回app 页面可以浏览 操作

实际结果:

页面卡住 没有反应; 页面变成了微信的页面 没有返回app 页面 (左滑后退复现)

bug描述:

app端webveiw h5跳转微信; 不能正常返回 页面卡住


更多关于uni-app app端webview跳转企业微信客服无法正常返回 app直接关闭的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

看我文档把https://blog.csdn.net/baisheng77/article/details/138224885?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22138224885%22%2C%22source%22%3A%22baisheng77%22%7D

更多关于uni-app app端webview跳转企业微信客服无法正常返回 app直接关闭的实战教程也可以访问 https://www.itying.com/category-93-b0.html


第三方的h5.。。。。

本来就不能返回只能操作你h5的页面前进后退,如果需要在h5页面使用uni的跳转能力 得使用他webview的sdk去实现 sdk连接如下https://gitee.com/dcloud/uni-app/raw/dev/dist/uni.webview.1.5.4.js

相同页面在其它app 里面是好的

uni-app 中使用 webview 跳转到企业微信客服时,可能会出现无法正常返回并导致应用直接关闭的情况。这通常是因为企业微信客服的页面在 webview 中打开后,无法正确处理返回事件,或者 webview 的生命周期管理存在问题。

以下是一些可能的解决方案:

1. 使用 uni.navigateBackuni.switchTab

webview 中打开企业微信客服页面后,尝试在返回时使用 uni.navigateBackuni.switchTab 来返回到应用的主页面。

uni.navigateBack({
    delta: 1
});

或者:

uni.switchTab({
    url: '/pages/index/index'
});

2. 使用 uni.redirectTo

如果你不希望保留 webview 的历史记录,可以使用 uni.redirectTo 来跳转到新的页面,这样在返回时不会返回到 webview 页面。

uni.redirectTo({
    url: '/pages/index/index'
});

3. 使用 uni.reLaunch

如果你希望关闭所有页面并重新打开应用的主页面,可以使用 uni.reLaunch

uni.reLaunch({
    url: '/pages/index/index'
});

4. 监听 webview 的返回事件

webview 中监听返回事件,并在事件触发时执行相应的操作。

uni.$on('webviewBack', function() {
    uni.navigateBack({
        delta: 1
    });
});

5. 使用 uni-appwebview 组件

如果你使用的是 uni-appwebview 组件,可以尝试在 webviewonLoadonUnload 生命周期中处理返回逻辑。

export default {
    onLoad() {
        // 页面加载时执行
    },
    onUnload() {
        // 页面卸载时执行
        uni.navigateBack({
            delta: 1
        });
    }
}

6. 使用 uni-appnavigateTo 方法

webview 中打开企业微信客服页面时,使用 uni.navigateTo 方法,并在返回时使用 uni.navigateBack 方法。

uni.navigateTo({
    url: '/pages/webview/webview?url=企业微信客服URL'
});

7. 使用 uni-appwebview 组件的 onNavigationBarButtonTap 方法

webview 页面中,监听导航栏按钮的点击事件,并在点击时执行返回操作。

export default {
    onNavigationBarButtonTap(e) {
        if (e.index === 0) {
            uni.navigateBack({
                delta: 1
            });
        }
    }
}

8. 检查企业微信客服页面的返回逻辑

确保企业微信客服页面在返回时不会直接关闭应用。你可以尝试在企业微信客服页面中添加返回按钮,并在点击时执行 uni.navigateBack 操作。

<button @click="goBack">返回</button>

methods: {
    goBack() {
        uni.navigateBack({
            delta: 1
        });
    }
}

9. 使用 uni-apponBackPress 生命周期

webview 页面中,监听 onBackPress 生命周期,并在返回时执行相应的操作。

export default {
    onBackPress() {
        uni.navigateBack({
            delta: 1
        });
        return true; // 阻止默认返回行为
    }
}
回到顶部