feat: 小程序跳转改用明文 URL Scheme

- UrlSchemeLauncher: 使用明文 Scheme 格式,无需后端 API 生成
- HomePage: 修复 path 格式,去掉开头斜杠以匹配小程序后台配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
zdl
2025-12-12 19:06:21 +08:00
parent 32f398df7a
commit f990b0a142
2 changed files with 25 additions and 10 deletions

View File

@@ -20,9 +20,26 @@ import {
Icon,
} from '@chakra-ui/react';
import { FiExternalLink, FiCopy, FiCheck } from 'react-icons/fi';
import { generateUrlScheme, openUrlScheme } from '@services/miniprogramService';
import { isIOSDevice } from './hooks/useWechatEnvironment';
// 小程序 AppID
const MINIPROGRAM_APPID = 'wx0edeaab76d4fa414';
/**
* 生成明文 URL Scheme
* 格式weixin://dl/business/?appid=APPID&path=PATH&query=QUERY
*/
const generatePlainUrlScheme = (path, query) => {
const params = new URLSearchParams({
appid: MINIPROGRAM_APPID,
path: path || '',
});
if (query) {
params.set('query', query);
}
return `weixin://dl/business/?${params.toString()}`;
};
/**
* URL Scheme 跳转组件
* @param {Object} props
@@ -54,17 +71,15 @@ const UrlSchemeLauncher = ({
try {
setLoading(true);
// 生成 URL Scheme
const result = await generateUrlScheme({ path, query });
// 生成明文 URL Scheme(不需要后端 API
const scheme = generatePlainUrlScheme(path, query);
console.log('[UrlSchemeLauncher] 生成的 scheme:', scheme);
if (!result?.openlink) {
throw new Error('生成跳转链接失败');
}
setOpenlink(result.openlink);
setOpenlink(scheme);
// 尝试直接跳转
const success = openUrlScheme(result.openlink);
window.location.href = scheme;
const success = true;
if (success) {
onSuccess?.();

View File

@@ -146,7 +146,7 @@ const HomePage: React.FC = () => {
zIndex={1000}
>
<MiniProgramLauncher
path="/pages/index/index"
path="pages/index/index"
buttonStyle={{
backgroundColor: '#07c160',
color: '#fff',