From ff27fd080c7baf56e1b08c090b702594ee679d0f Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Wed, 12 Nov 2025 19:03:20 +0800 Subject: [PATCH] =?UTF-8?q?test14(KYC=E9=A1=B5):=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/uploadFiles.js | 98 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/src/utils/uploadFiles.js b/src/utils/uploadFiles.js index 70a5f45..feb7b8e 100644 --- a/src/utils/uploadFiles.js +++ b/src/utils/uploadFiles.js @@ -20,11 +20,101 @@ export function uploadImgFile(renderFun) { if (window.FlutterPageControl) { console.log('使用window.FlutterPageControl.postMessage(`uploadImgFile`)') // 直接使用Flutter通道 - const result = window.FlutterPageControl.postMessage(`uploadImgFile`) - console.log('result:', result) - // renderFun('') + window.FlutterPageControl.postMessage(`uploadImgFile`) + + try { + if (android()) { + console.debug('Flutter Android WebView 检测') + console.debug('window.app 对象:', window.app) + + // 检查Flutter注入的接口 + if (window.app) { + console.debug('window.app 的所有方法:') + console.debug(Object.keys(window.app)) + + // 检查具体的方法 + console.debug('getAccessOrigin 方法存在?', typeof window.app.getAccessOrigin) + console.debug( + 'getAccessOrigin 是函数?', + typeof window.app.getAccessOrigin === 'function' + ) + } + + // 等待Flutter注入完成 + const waitForFlutterInterface = () => { + let attempts = 0 + const maxAttempts = 100 // 最多等待5秒 + + const checkInterface = () => { + attempts++ + console.debug(`尝试第 ${attempts} 次检查Flutter接口...`) + + if ( + window.app && + window.app.getAccessOrigin && + typeof window.app.getAccessOrigin === 'function' + ) { + console.debug('Flutter接口检测成功,调用 getAccessOrigin') + try { + const result = window.app.getAccessOrigin() + console.debug('getAccessOrigin 返回结果:', result) + renderFun(result) + } catch (error) { + console.error('调用 getAccessOrigin 出错:', error) + } + } else if (attempts < maxAttempts) { + // 继续等待 + setTimeout(checkInterface, 100) + } else { + console.error('Flutter接口注入超时,使用默认数据') + // 使用默认的开发数据 + const mockAccess = JSON.stringify({}) + renderFun(mockAccess) + } + } + + checkInterface() + } + + // 如果window.app已存在,直接检查,否则等待 + if (window.app) { + waitForFlutterInterface() + } else { + console.debug('等待Flutter注入window.app...') + // 监听window.app的创建 + let checkCount = 0 + const checkApp = () => { + checkCount++ + if (window.app) { + console.debug('检测到window.app,开始连接') + waitForFlutterInterface() + } else if (checkCount < 50) { + setTimeout(checkApp, 100) + } else { + console.error('等待window.app超时') + // 手动通知Flutter注入接口 + if (window.FlutterApp && window.FlutterApp.postMessage) { + window.FlutterApp.postMessage('requestAccessOrigin') + } + } + } + checkApp() + } + } else { + console.debug('非移动设备环境') + // 非APP环境,可能是浏览器调试 + console.warn('Not in APP environment, using mock data for development') + // 开发环境可以提供模拟数据 + if (process.env.NODE_ENV === 'development') { + const mockAccess = JSON.stringify({}) + setTimeout(() => renderFun(mockAccess), 100) + } + } + } catch (error) { + console.error('Failed to connect to APP:', error) + } } else { - console.log('window.app.uploadImgFile和window.FlutterPageControl都不存在,使用降级处理') + console.log('window.FlutterPageControl不存在') // 降级处理 const mockAccess = JSON.stringify('') renderFun(mockAccess)