From cb9e520fb44a4e9759ade6661b428ebf81a18350 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 8 Dec 2025 23:38:32 -0800 Subject: [PATCH] feat(mobile-app): change share QR code to APK download link with referral code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QR code now contains: https://s3.szaiai.com/rwadurian/app-release.apk?ref={referralCode} - User scans QR to download APK directly - Guide page 5 already supports parsing ref parameter from URL 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../share/presentation/pages/share_page.dart | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/frontend/mobile-app/lib/features/share/presentation/pages/share_page.dart b/frontend/mobile-app/lib/features/share/presentation/pages/share_page.dart index e219c3a3..d81e9592 100644 --- a/frontend/mobile-app/lib/features/share/presentation/pages/share_page.dart +++ b/frontend/mobile-app/lib/features/share/presentation/pages/share_page.dart @@ -38,7 +38,10 @@ class _SharePageState extends ConsumerState { _loadShareLink(); } - /// 加载分享链接 (调用 API 生成短链) + /// APK 下载基础链接 + static const String _apkDownloadUrl = 'https://s3.szaiai.com/rwadurian/app-release.apk'; + + /// 加载分享链接 (使用 APK 下载链接 + 推荐码) Future _loadShareLink() async { try { setState(() { @@ -48,15 +51,14 @@ class _SharePageState extends ConsumerState { final referralService = ref.read(referralServiceProvider); - // 调用 API 生成短链 + // 调用 API 获取推荐码 final linkResponse = await referralService.generateReferralLink(); if (mounted) { setState(() { - // 优先使用短链,如果没有则使用完整链接 - _displayLink = linkResponse.shortUrl.isNotEmpty - ? linkResponse.shortUrl - : linkResponse.fullUrl; + // 使用 APK 下载链接 + 推荐码参数 + final referralCode = linkResponse.referralCode; + _displayLink = '$_apkDownloadUrl?ref=$referralCode'; _isLoading = false; }); } @@ -65,9 +67,13 @@ class _SharePageState extends ConsumerState { if (mounted) { setState(() { _isLoading = false; - // 失败时使用传入的默认链接 - _displayLink = widget.shareLink; - _errorMessage = '加载短链失败,使用默认链接'; + // 失败时使用传入的推荐码构造链接 + if (widget.referralCode != null && widget.referralCode!.isNotEmpty) { + _displayLink = '$_apkDownloadUrl?ref=${widget.referralCode}'; + } else { + _displayLink = _apkDownloadUrl; + } + _errorMessage = '加载失败,使用默认链接'; }); } }