From 04693b805e976a537e857c9fe35149048898e8ab Mon Sep 17 00:00:00 2001 From: Junhui Chen Date: Wed, 16 Jul 2025 14:28:24 +0800 Subject: [PATCH] feat: download page --- app/(tabs)/_layout.tsx | 10 ++++++ app/(tabs)/download.tsx | 63 ++++++++++++++++++++++++++++++++++ assets/icons/svg/android.svg | 1 + assets/icons/svg/apple.svg | 1 + i18n/index.ts | 2 +- i18n/locales/en/download.json | 6 ++++ i18n/locales/zh/download.json | 6 ++++ i18n/translations-generated.ts | 12 ++++--- package-lock.json | 12 +++++++ package.json | 1 + 10 files changed, 109 insertions(+), 5 deletions(-) create mode 100644 app/(tabs)/download.tsx create mode 100644 assets/icons/svg/android.svg create mode 100644 assets/icons/svg/apple.svg create mode 100644 i18n/locales/en/download.json create mode 100644 i18n/locales/zh/download.json diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx index 9db1790..fc5c8d1 100644 --- a/app/(tabs)/_layout.tsx +++ b/app/(tabs)/_layout.tsx @@ -120,6 +120,16 @@ export default function TabLayout() { tabBarStyle: { display: 'none' } // 确保在标签栏中不显示 }} /> + {/* 下载 */} + null, // 隐藏底部标签栏 + headerShown: false, // 隐藏导航栏 + tabBarStyle: { display: 'none' } // 确保在标签栏中不显示 + }} + /> ); } diff --git a/app/(tabs)/download.tsx b/app/(tabs)/download.tsx new file mode 100644 index 0000000..35cd9d9 --- /dev/null +++ b/app/(tabs)/download.tsx @@ -0,0 +1,63 @@ +import AndroidLogo from '@/assets/icons/svg/android.svg'; +import AppleLogo from '@/assets/icons/svg/apple.svg'; +import MemoIP from '@/assets/icons/svg/memo-ip.svg'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useTranslation } from 'react-i18next'; +import { Linking, Text, TouchableOpacity, View } from 'react-native'; + +const IOS_APP_STORE_URL = 'https://apps.apple.com/cn/app/id6748205761'; +const ANDROID_APK_URL = 'https://cdn.memorywake.com/apks/application-f086a38c-dac1-43f1-9d24-e4378c2ce121.apk'; +export default function DownloadScreen() { + const handleIOSDownload = () => { + Linking.openURL(IOS_APP_STORE_URL); + }; + + const handleAndroidDownload = () => { + Linking.openURL(ANDROID_APK_URL); + }; + + const { t } = useTranslation(); + + return ( + + + + + + + MemoWake + + + {t('desc', { ns: 'download' })} + + + + + + + + {t('ios', { ns: 'download' })} + + + + + + + {t('android', { ns: 'download' })} + + + + + ); +} diff --git a/assets/icons/svg/android.svg b/assets/icons/svg/android.svg new file mode 100644 index 0000000..59f4ee2 --- /dev/null +++ b/assets/icons/svg/android.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/svg/apple.svg b/assets/icons/svg/apple.svg new file mode 100644 index 0000000..b590be7 --- /dev/null +++ b/assets/icons/svg/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/i18n/index.ts b/i18n/index.ts index 8b5ff26..02374a2 100644 --- a/i18n/index.ts +++ b/i18n/index.ts @@ -17,7 +17,7 @@ i18n resources: translations, // 支持命名空间 - ns: ['common', 'example'], + ns: ['common', 'example', 'download'], defaultNS: 'common', // 设置默认语言为中文 diff --git a/i18n/locales/en/download.json b/i18n/locales/en/download.json new file mode 100644 index 0000000..faaec14 --- /dev/null +++ b/i18n/locales/en/download.json @@ -0,0 +1,6 @@ +{ + "title": "Download Our App", + "desc": "Get the full experience by downloading our app on your favorite platform.", + "ios": "Download for iOS", + "android": "Download for Android" +} \ No newline at end of file diff --git a/i18n/locales/zh/download.json b/i18n/locales/zh/download.json new file mode 100644 index 0000000..3b1a5d0 --- /dev/null +++ b/i18n/locales/zh/download.json @@ -0,0 +1,6 @@ +{ + "title": "下载我们的应用", + "desc": "在您喜欢的平台上下载我们的应用,以获得完整的体验。", + "ios": "下载 iOS 版", + "android": "下载 Android 版" +} \ No newline at end of file diff --git a/i18n/translations-generated.ts b/i18n/translations-generated.ts index be54939..4edacca 100644 --- a/i18n/translations-generated.ts +++ b/i18n/translations-generated.ts @@ -3,6 +3,7 @@ import enAdmin from './locales/en/admin.json'; import enAsk from './locales/en/ask.json'; import enCommon from './locales/en/common.json'; +import enDownload from './locales/en/download.json'; import enExample from './locales/en/example.json'; import enFairclip from './locales/en/fairclip.json'; import enLanding from './locales/en/landing.json'; @@ -12,6 +13,7 @@ import enUpload from './locales/en/upload.json'; import zhAdmin from './locales/zh/admin.json'; import zhAsk from './locales/zh/ask.json'; import zhCommon from './locales/zh/common.json'; +import zhDownload from './locales/zh/download.json'; import zhExample from './locales/zh/example.json'; import zhFairclip from './locales/zh/fairclip.json'; import zhLanding from './locales/zh/landing.json'; @@ -22,25 +24,27 @@ import zhUpload from './locales/zh/upload.json'; const translations = { en: { admin: enAdmin, + ask: enAsk, common: enCommon, + download: enDownload, example: enExample, fairclip: enFairclip, landing: enLanding, login: enLogin, personal: enPersonal, - upload: enUpload, - ask: enAsk + upload: enUpload }, zh: { admin: zhAdmin, + ask: zhAsk, common: zhCommon, + download: zhDownload, example: zhExample, fairclip: zhFairclip, landing: zhLanding, login: zhLogin, personal: zhPersonal, - upload: zhUpload, - ask: zhAsk + upload: zhUpload }, }; diff --git a/package-lock.json b/package-lock.json index 32c4a54..e5f8264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "expo-image": "~2.3.2", "expo-image-manipulator": "~13.1.7", "expo-image-picker": "~16.1.4", + "expo-linear-gradient": "^14.1.5", "expo-linking": "~7.1.5", "expo-localization": "^16.1.5", "expo-location": "~18.1.5", @@ -8033,6 +8034,17 @@ "react": "*" } }, + "node_modules/expo-linear-gradient": { + "version": "14.1.5", + "resolved": "http://192.168.31.115:8081/repository/npm/expo-linear-gradient/-/expo-linear-gradient-14.1.5.tgz", + "integrity": "sha512-BSN3MkSGLZoHMduEnAgfhoj3xqcDWaoICgIr4cIYEx1GcHfKMhzA/O4mpZJ/WC27BP1rnAqoKfbclk1eA70ndQ==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-linking": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-7.1.6.tgz", diff --git a/package.json b/package.json index 6236ffb..8c846b5 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "expo-image": "~2.3.2", "expo-image-manipulator": "~13.1.7", "expo-image-picker": "~16.1.4", + "expo-linear-gradient": "^14.1.5", "expo-linking": "~7.1.5", "expo-localization": "^16.1.5", "expo-location": "~18.1.5",