update: 从微信中跳转到app

main
fadeaway 6 months ago
parent df8c5ccd55
commit c8ccbfb6ca

@ -1,6 +1,6 @@
'use client'; 'use client';
import { useRef } from 'react'; import { useRef, useEffect } from 'react';
import Link from 'next/link'; import Link from 'next/link';
@ -17,12 +17,15 @@ export default function Home() {
const firstScreenRef = useRef<HTMLDivElement>(null); const firstScreenRef = useRef<HTMLDivElement>(null);
const { inWX } = useUA(); const { inWX } = useUA();
const nav = useNav(); const nav = useNav();
const downloadBtnRef = useRef<HTMLButtonElement>(null);
const handleDownload = () => { const handleDownload = () => {
if (!inWX) { if (!inWX) {
download(); download();
} else { } else {
setTimeout(() => {
nav.push({ path: '/download' }); nav.push({ path: '/download' });
}, 1500);
} }
}; };
@ -30,6 +33,21 @@ export default function Home() {
window.scrollTo({ top: firstScreenRef?.current?.offsetHeight, behavior: 'smooth' }); window.scrollTo({ top: firstScreenRef?.current?.offsetHeight, behavior: 'smooth' });
}; };
useEffect(() => {
const handleLaunch = () => {
console.log('success');
};
const handleError = (e: any) => {
console.log('fail', e.detail);
};
downloadBtnRef.current?.addEventListener('launch', handleLaunch);
downloadBtnRef.current?.addEventListener('error', handleError);
return () => {
downloadBtnRef.current?.removeEventListener('launch', handleLaunch);
downloadBtnRef.current?.removeEventListener('error', handleError);
};
}, []);
return ( return (
<> <>
<main className="max-w-screen-sm min-h-screen mx-auto flex flex-col items-center text-white font-normal"> <main className="max-w-screen-sm min-h-screen mx-auto flex flex-col items-center text-white font-normal">
@ -49,10 +67,21 @@ export default function Home() {
<WXShareBtn /> <WXShareBtn />
{/* 下载 */} {/* 下载 */}
<button <button
className="w-[283px] h-[48px] flex items-center justify-center bg-[#C43737] font-medium text-[17px] rounded-full mb-[16px]" ref={downloadBtnRef}
className="relative w-[283px] h-[48px] flex items-center justify-center bg-[#C43737] font-medium text-[17px] rounded-full mb-[16px]"
onClick={handleDownload} onClick={handleDownload}
> >
APP APP
<wx-open-launch-app
id="launch-btn"
appid="wxae6fb76efa147314"
extinfo="your-extinfo"
style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }}
>
<script type="text/wxtag-template">
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', opacity: 0 }} />
</script>
</wx-open-launch-app>
</button> </button>
<button className="w-[283px] h-[48px] flex justify-center" onClick={handleSlideDown}> <button className="w-[283px] h-[48px] flex justify-center" onClick={handleSlideDown}>
<ImageWithBasePath <ImageWithBasePath

@ -50,8 +50,9 @@ export default function WXShareBtn() {
if (typeof wx === 'undefined') return; if (typeof wx === 'undefined') return;
const { timestamp, nonceStr, signature } = res?.data || {}; const { timestamp, nonceStr, signature } = res?.data || {};
wx.config({ wx.config({
// debug: process.env.NODE_ENV === 'development', // 开启调试模式,调用的所有api的返回值会在客户端alert出来若要查看传入的参数可以在pc端打开参数信息会通过log打出仅在pc端时才会打印。
debug: process.env.NODE_ENV === 'development', // 开启调试模式,调用的所有api的返回值会在客户端alert出来若要查看传入的参数可以在pc端打开参数信息会通过log打出仅在pc端时才会打印。 debug: process.env.NODE_ENV === 'development', // 开启调试模式,调用的所有api的返回值会在客户端alert出来若要查看传入的参数可以在pc端打开参数信息会通过log打出仅在pc端时才会打印。
appId: APPID, // 必填,公众号的唯一标识 appId: false, // 必填,公众号的唯一标识
timestamp, // 必填,生成签名的时间戳 timestamp, // 必填,生成签名的时间戳
nonceStr, // 必填,生成签名的随机串 nonceStr, // 必填,生成签名的随机串
signature, // 必填,签名 signature, // 必填,签名

@ -16,3 +16,9 @@ interface ISong {
songNo: number; songNo: number;
haveCollect: boolean; haveCollect: boolean;
} }
declare namespace JSX {
interface IntrinsicElements {
'wx-open-launch-app': any;
}
}

Loading…
Cancel
Save