From c1209bed883be56ab4f180d8d6ef03704608e4b2 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Tue, 29 Jul 2025 22:21:24 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0info?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner/Info.plist | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 3d78b7eda..3e7a2de00 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -57,10 +57,10 @@ FacebookClientToken 193d0a2b1757c41cfa557ea8e8f21c33 - + SKAdNetworkItems - + NSAdvertisingAttributionReportEndpoint LSApplicationQueriesSchemes @@ -94,23 +94,23 @@ NSBluetoothAlwaysUsageDescription - 需要蓝牙权限用于连接和管理音频设备 + Bluetooth permission is required to connect and manage audio devices NSBluetoothPeripheralUsageDescription - 需要蓝牙权限用于连接和管理音频设备 + Bluetooth permission is required to connect and manage audio devices NSCalendarsUsageDescription - 需要日历权限用于安排和管理您的音频会议和录音任务 + Calendar permission is required to schedule and manage your audio meetings and recording tasks NSCameraUsageDescription - 需要相机权限用于扫描二维码和视频通话功能 + Camera permission is required for QR code scanning and video calling functions NSLocationAlwaysAndWhenInUseUsageDescription - 语音助手需要位置权限来为您提供基于位置的信息和服务 + The voice assistant needs location permission to provide you with location-based information and services NSLocationWhenInUseUsageDescription - 语音助手需要位置权限来为您提供基于位置的信息和服务 + The voice assistant needs location permission to provide you with location-based information and services NSMicrophoneUsageDescription - 需要麦克风权限用于语音识别和录音功能 + Microphone permission is required for voice recognition and recording functions NSMotionUsageDescription - 我们需要访问您的运动数据以提供更精准的导航服务 + We need access to your motion data to provide more accurate navigation services NSPhotoLibraryUsageDescription - 需要相册权限用于保存录音文件和导入音频文件 + Photo library permission is required to save recording files and import audio files UIApplicationSupportsIndirectInputEvents UIBackgroundModes From 85ce6a46dbff08260083f0d9e3a7162b0098edf9 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 30 Jul 2025 15:05:12 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0iOS=20=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 17 ++++++++++++++++- lib/core/translations/language/en_us.dart | 2 +- lib/core/translations/language/ru_ru.dart | 2 +- lib/core/translations/language/th_th.dart | 2 +- lib/core/translations/language/tr_tr.dart | 2 +- lib/core/translations/language/uk_ua.dart | 4 ++-- lib/core/translations/language/zh_cn.dart | 4 ++-- lib/core/translations/language/zh_hk.dart | 4 ++-- .../views/bottomSheet/share_bottom_sheet.dart | 5 +++-- .../pairing/controllers/pairing_controller.dart | 8 +++++--- lib/modules/pairing/views/pairing_view.dart | 2 +- .../amap_service/ios/Classes/AmapService.swift | 2 +- .../ios/Classes/AmapServicePlugin.swift | 2 +- 13 files changed, 37 insertions(+), 19 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index cbcbc2de7..99b602480 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 60; objects = { /* Begin PBXBuildFile section */ @@ -539,8 +539,13 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -734,9 +739,14 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -761,8 +771,13 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index bf95c258d..f529e2a7a 100644 --- a/lib/core/translations/language/en_us.dart +++ b/lib/core/translations/language/en_us.dart @@ -742,7 +742,7 @@ const Map enUS = { // 配对模块 // 配对页面 "devicePairing": "Device Pairing", - "connectYourDeepSoundHeadset": "Connect Your DeepSound Headset", + "connectYourDeepSoundHeadset": "Connect Your Voitrans Headset", "bind": "Bind", "authorizeBind": "Authorize Binding", "enterCode": "Please enter code", diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index eb613e7ae..c96599c05 100644 --- a/lib/core/translations/language/ru_ru.dart +++ b/lib/core/translations/language/ru_ru.dart @@ -702,7 +702,7 @@ const Map ruRU = { // 配对模块 // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Сопряжение устройства", - "connectYourDeepSoundHeadset": "Подключите ваши наушники DeepSound", + "connectYourDeepSoundHeadset": "Подключите ваши наушники Voitrans", "bind": "Привязать", "authorizeBind": "Авторизовать привязку", "enterCode": "Пожалуйста, введите код", diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index e6604304c..f037318e9 100644 --- a/lib/core/translations/language/th_th.dart +++ b/lib/core/translations/language/th_th.dart @@ -736,7 +736,7 @@ const Map thTH = { 'retryAuthorization': 'ลองอนุญาตอีกครั้ง', 'pleaseGrantNecessaryPermissions': 'กรุณาให้สิทธิ์ที่จำเป็น', 'checkFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', - 'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ DeepSound', + 'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ Voitrans', 'verificationFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', 'invalidDeviceAddress': 'ที่อยู่อุปกรณ์ไม่ถูกต้อง', 'bleDeviceAssociationFailed': 'การเชื่อมโยงอุปกรณ์ BLE ล้มเหลว', diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index 44ba8ec2c..b2d537d51 100644 --- a/lib/core/translations/language/tr_tr.dart +++ b/lib/core/translations/language/tr_tr.dart @@ -695,7 +695,7 @@ const Map trTR = { // 配对模块 // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Cihaz Eşleştirme", - "connectYourDeepSoundHeadset": "DeepSound Kulaklığınızı Bağlayın", + "connectYourDeepSoundHeadset": "Voitrans Kulaklığınızı Bağlayın", "bind": "Bağla", "authorizeBind": "Bağlamayı Yetkilendir", "enterCode": "Lütfen kodu girin", diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index 65e2ac2fd..95ea53215 100644 --- a/lib/core/translations/language/uk_ua.dart +++ b/lib/core/translations/language/uk_ua.dart @@ -702,7 +702,7 @@ const Map ukUA = { // 配对模块 // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Спарювання пристрою", - "connectYourDeepSoundHeadset": "Підключіть ваші навушники DeepSound", + "connectYourDeepSoundHeadset": "Підключіть ваші навушники Voitrans", "bind": "Прив'язати", "authorizeBind": "Авторизувати прив'язку", "enterCode": "Будь ласка, введіть код", @@ -757,7 +757,7 @@ const Map ukUA = { 'retryAuthorization': 'Повторити авторизацію', 'pleaseGrantNecessaryPermissions': 'Будь ласка, надайте необхідні дозволи', 'checkFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', - 'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій DeepSound', + 'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій Voitrans', 'verificationFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', 'invalidDeviceAddress': 'Недійсна адреса пристрою', 'bleDeviceAssociationFailed': 'Не вдалося асоціювати пристрій BLE', diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index da9628b86..52a3cc093 100644 --- a/lib/core/translations/language/zh_cn.dart +++ b/lib/core/translations/language/zh_cn.dart @@ -684,7 +684,7 @@ const Map zhCN = { // 配对模块 // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "设备配对", - "connectYourDeepSoundHeadset": "连接您的 DeepSound 耳机", + "connectYourDeepSoundHeadset": "连接您的 Voitrans 耳机", "bind": "绑定", "authorizeBind": "授权绑定", "enterCode": "请输入代码", @@ -736,7 +736,7 @@ const Map zhCN = { 'retryAuthorization': '重新授权', 'pleaseGrantNecessaryPermissions': '请授予必要权限', 'checkFailedRetry': '检查失败,请重试', - 'pleaseConnectDeepSoundDevice': '请连接 DeepSound 设备', + 'pleaseConnectDeepSoundDevice': '请连接 Voitrans 设备', 'verificationFailedRetry': '验证失败,请重试', 'invalidDeviceAddress': '设备地址无效', 'bleDeviceAssociationFailed': 'BLE设备关联失败', diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index af7a90433..aa83a2427 100644 --- a/lib/core/translations/language/zh_hk.dart +++ b/lib/core/translations/language/zh_hk.dart @@ -648,7 +648,7 @@ const Map zhHK = { // 配對模塊 // 配對頁面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "設備配對", - "connectYourDeepSoundHeadset": "連接您的 DeepSound 耳機", + "connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機", "bind": "綁定", "authorizeBind": "授權綁定", "enterCode": "請輸入代碼", @@ -695,7 +695,7 @@ const Map zhHK = { 'retryAuthorization': '重新授權', 'pleaseGrantNecessaryPermissions': '請授予必要權限', 'checkFailedRetry': '檢查失敗,請重試', - 'pleaseConnectDeepSoundDevice': '請連接 DeepSound 設備', + 'pleaseConnectDeepSoundDevice': '請連接 Voitrans 設備', 'verificationFailedRetry': '驗證失敗,請重試', 'invalidDeviceAddress': '設備地址無效', 'bleDeviceAssociationFailed': 'BLE設備關聯失敗', diff --git a/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart index 896e5bcf8..55086266f 100644 --- a/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart @@ -103,7 +103,7 @@ class _ShareBottomSheetState extends State { final result = await SharePlus.instance.share(ShareParams( title: _controller.meetingData.value.title, subject: - 'DeepSound WEB,由DeepSound.Ai提供支持-实时记录会议纪要,多语言翻译。', + 'Voitrans WEB,由DeepSound.Ai提供支持-实时记录会议纪要,多语言翻译。', uri: Uri.parse( 'http://web.ideapsound.com/share/$id/$token', ), @@ -281,7 +281,8 @@ class _ShareBottomSheetState extends State { title, style: TextStyle( fontSize: 14.sp, - color: Colors.black87.withValues(alpha: onTap != null ? 1 : 0.5), + color: + Colors.black87.withValues(alpha: onTap != null ? 1 : 0.5), ), ), ), diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index a68b4b62b..d267211f3 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -181,7 +181,8 @@ class PairingController extends GetxController { /// 处理蓝牙开关状态变化 void _handleBluetoothStateChange(String state) { if (state == 'off') { - _setError(ErrorType.bluetoothOff, 'pleaseEnableBluetooth'.tr); + _setError( + ErrorType.bluetoothOff, 'connectDeepSoundViaSystemBluetooth'.tr); } else if (state == 'on' && _errorType.value == ErrorType.bluetoothOff) { // 蓝牙重新开启,恢复流程 Logger.i(_tag, '检测到蓝牙已开启,自动恢复配对流程'); @@ -336,7 +337,7 @@ class PairingController extends GetxController { switch (_errorType.value) { case ErrorType.bluetoothOff: showConnectButton.value = true; - connectButtonText.value = 'enableBluetooth'.tr; //开启蓝牙 + connectButtonText.value = 'goToBluetoothSettings'.tr; //开启蓝牙 break; case ErrorType.noClassicDevice: showConnectButton.value = true; @@ -400,7 +401,8 @@ class PairingController extends GetxController { final arePermissionsOk = results[1] as bool; if (!isBluetoothOk) { - _setError(ErrorType.bluetoothOff, 'pleaseEnableBluetooth'.tr); + _setError( + ErrorType.bluetoothOff, 'connectDeepSoundViaSystemBluetooth'.tr); return; } diff --git a/lib/modules/pairing/views/pairing_view.dart b/lib/modules/pairing/views/pairing_view.dart index f4c90113c..1151eeecf 100644 --- a/lib/modules/pairing/views/pairing_view.dart +++ b/lib/modules/pairing/views/pairing_view.dart @@ -481,7 +481,7 @@ class _PairingViewState extends State final errorType = controller.errorType; switch (errorType) { case ErrorType.bluetoothOff: - return 'bluetoothTurnedOff'.tr; // 蓝牙已关闭,请打开蓝牙 + return 'connectDeepSoundViaSystemBluetooth'.tr; // 蓝牙已关闭,请打开蓝牙 case ErrorType.noPermission: return 'lackPermissions'.tr; // 缺少蓝牙权限 case ErrorType.noClassicDevice: diff --git a/local_plugins/amap_service/ios/Classes/AmapService.swift b/local_plugins/amap_service/ios/Classes/AmapService.swift index c962cc002..def1aa308 100644 --- a/local_plugins/amap_service/ios/Classes/AmapService.swift +++ b/local_plugins/amap_service/ios/Classes/AmapService.swift @@ -24,7 +24,7 @@ public class AmapService: NSObject, AMapNaviDriveManagerDelegate { // 设置高德地图服务 // 1. 设置隐私合规 AMapServices.shared()?.enableHTTPS = true - AMapServices.shared()?.apiKey = "0b704e172b7ade5a7a18728e8f517a05" + AMapServices.shared()?.apiKey = "6144a636c24dc9f2e1e57f7597849cf7" } public func startNavigation(from start: String, to end: String) { diff --git a/local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift b/local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift index 4be2e55a8..d23e467cb 100644 --- a/local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift +++ b/local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift @@ -22,7 +22,7 @@ public class AmapServicePlugin: NSObject, FlutterPlugin, FlutterStreamHandler { // 高德SDK初始化 DispatchQueue.main.async { - AMapServices.shared()?.apiKey = "0b704e172b7ade5a7a18728e8f517a05" + AMapServices.shared()?.apiKey = "6144a636c24dc9f2e1e57f7597849cf7" AMapServices.shared()?.enableHTTPS = true if #available(iOS 13.0, *) { From ba1b3db2925fe15813a04b1013e75e11fb9f37d5 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Wed, 30 Jul 2025 15:22:35 +0800 Subject: [PATCH 3/5] =?UTF-8?q?docs(ios):=20=E6=9B=B4=E6=96=B0=E9=9A=90?= =?UTF-8?q?=E7=A7=81=E6=9D=83=E9=99=90=E6=8F=8F=E8=BF=B0=E4=BB=A5=E6=9B=B4?= =?UTF-8?q?=E6=B8=85=E6=99=B0=E8=AF=B4=E6=98=8E=E5=8A=9F=E8=83=BD=E7=94=A8?= =?UTF-8?q?=E9=80=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新iOS应用的隐私权限描述文本,更详细地说明位置、麦克风和运动数据的使用场景,帮助用户理解这些权限如何增强应用功能。 --- ios/Runner/Info.plist | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 3e7a2de00..12f7c79f7 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -102,13 +102,13 @@ NSCameraUsageDescription Camera permission is required for QR code scanning and video calling functions NSLocationAlwaysAndWhenInUseUsageDescription - The voice assistant needs location permission to provide you with location-based information and services + Location access enables the app to provide location-based voice translation services, such as translating local place names and providing contextual information relevant to your current location during conversations. NSLocationWhenInUseUsageDescription - The voice assistant needs location permission to provide you with location-based information and services + Location access enables the app to provide location-based voice translation services, such as translating local place names and providing contextual information relevant to your current location during conversations. NSMicrophoneUsageDescription - Microphone permission is required for voice recognition and recording functions + Microphone access is essential for voice recognition, real-time translation, and audio recording features. The app processes your speech to provide accurate translation and transcription services. NSMotionUsageDescription - We need access to your motion data to provide more accurate navigation services + This app uses motion and fitness data to detect when you're walking or moving, which helps optimize voice recognition accuracy and automatically adjust microphone sensitivity for better audio recording quality during different activities. NSPhotoLibraryUsageDescription Photo library permission is required to save recording files and import audio files UIApplicationSupportsIndirectInputEvents From e24c2b697fc5030f926cf2bd6ea4c27faaf5b283 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 30 Jul 2025 16:41:01 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0iOS=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 31 +++++++++++-------- ios/Runner/Info.plist | 23 ++++++-------- ios/Runner/Runner.entitlements | 24 +++++++++++--- .../splash/controllers/splash_controller.dart | 8 +++++ pubspec.yaml | 1 + 5 files changed, 57 insertions(+), 30 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 99b602480..186d0e7a0 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 60; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -514,7 +514,7 @@ NEW_SETTING = ""; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; VALIDATE_PRODUCT = YES; }; name = Profile; @@ -539,10 +539,11 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -577,6 +578,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K39FB49XKY; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; @@ -594,6 +596,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = K39FB49XKY; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; @@ -659,7 +662,7 @@ NEW_SETTING = ""; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; @@ -714,7 +717,7 @@ SUPPORTED_PLATFORMS = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; VALIDATE_PRODUCT = YES; }; name = Release; @@ -739,10 +742,11 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -771,10 +775,11 @@ MARKETING_VERSION = 1.0.1; PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans; PRODUCT_NAME = "$(TARGET_NAME)"; + REGISTER_APP_GROUPS = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 3e7a2de00..2652d9c7e 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -57,12 +57,6 @@ FacebookClientToken 193d0a2b1757c41cfa557ea8e8f21c33 - - SKAdNetworkItems - - - NSAdvertisingAttributionReportEndpoint - LSApplicationQueriesSchemes weixin @@ -86,6 +80,8 @@ LSRequiresIPhoneOS + NSAdvertisingAttributionReportEndpoint + NSAppTransportSecurity NSAllowsArbitraryLoads @@ -93,6 +89,8 @@ NSAllowsArbitraryLoadsInWebContent + NSUserTrackingUsageDescription + This identifier will be used to deliver personalized ads to you. NSBluetoothAlwaysUsageDescription Bluetooth permission is required to connect and manage audio devices NSBluetoothPeripheralUsageDescription @@ -111,6 +109,8 @@ We need access to your motion data to provide more accurate navigation services NSPhotoLibraryUsageDescription Photo library permission is required to save recording files and import audio files + SKAdNetworkItems + UIApplicationSupportsIndirectInputEvents UIBackgroundModes @@ -119,22 +119,19 @@ audio location + UIDeviceFamily + + 1 + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UISupportedInterfaceOrientations - UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UIViewControllerBasedStatusBarAppearance diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements index ed86a9636..f05d7901a 100644 --- a/ios/Runner/Runner.entitlements +++ b/ios/Runner/Runner.entitlements @@ -2,6 +2,10 @@ + com.apple.developer.applesignin + + Default + com.apple.developer.associated-domains applinks:voitrans.net @@ -10,9 +14,21 @@ com.apple.external-accessory.wireless-configuration - com.apple.developer.applesignin - - Default - + com.apple.security.app-sandbox + + com.apple.security.device.audio-input + + com.apple.security.device.bluetooth + + com.apple.security.device.camera + + com.apple.security.network.client + + com.apple.security.personal-information.calendars + + com.apple.security.personal-information.location + + com.apple.security.personal-information.photos-library + diff --git a/lib/modules/splash/controllers/splash_controller.dart b/lib/modules/splash/controllers/splash_controller.dart index b12b22746..ba834cdc1 100644 --- a/lib/modules/splash/controllers/splash_controller.dart +++ b/lib/modules/splash/controllers/splash_controller.dart @@ -1,5 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:app_tracking_transparency/app_tracking_transparency.dart'; + import '../../../data/models/appconfig.dart'; import '../../../data/models/appconfig_model.dart'; import 'package:flutter/material.dart'; @@ -47,6 +49,12 @@ class SplashController extends GetxController { _startNormalFlow(); } }); + + //弹出用户追中问题 + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async { + final status = + await AppTrackingTransparency.requestTrackingAuthorization(); + }); } void _startNormalFlow() { diff --git a/pubspec.yaml b/pubspec.yaml index 64a6f01ac..df950b8a5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -69,6 +69,7 @@ dependencies: flutter_image_compress: ^2.4.0 common_utils: ^2.1.0 image_gallery_saver_plus: ^4.0.1 + app_tracking_transparency: ^2.0.1 dio: ^5.8.0+1 sqflite: ^2.4.2 path: ^1.9.1 From 9d0b101979417cd568cb3abf203c23a2d8c9fef6 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 30 Jul 2025 18:52:33 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0iOS=20=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=20=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ios/Runner.xcodeproj/project.pbxproj | 6 +++--- ios/Runner/Info.plist | 15 ++++++++------- local_plugins/spotify_sdk/ios/spotify_sdk.podspec | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 186d0e7a0..0a7a4df09 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -546,7 +546,7 @@ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -750,7 +750,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -782,7 +782,7 @@ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index dcecf84a3..f1195f0fc 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -89,8 +89,6 @@ NSAllowsArbitraryLoadsInWebContent - NSUserTrackingUsageDescription - This identifier will be used to deliver personalized ads to you. NSBluetoothAlwaysUsageDescription Bluetooth permission is required to connect and manage audio devices NSBluetoothPeripheralUsageDescription @@ -104,11 +102,13 @@ NSLocationWhenInUseUsageDescription Location access enables the app to provide location-based voice translation services, such as translating local place names and providing contextual information relevant to your current location during conversations. NSMicrophoneUsageDescription - Microphone access is essential for voice recognition, real-time translation, and audio recording features. The app processes your speech to provide accurate translation and transcription services. + Our app's voice AI interaction features (such as voice wake-up for AI, issuing commands, and real-time conversations) require microphone access. With this permission, you can interact with AI directly through speech, improving operational efficiency. We strictly protect your voice data—only used for real-time processing of interaction requests, and raw audio will not be stored. NSMotionUsageDescription This app uses motion and fitness data to detect when you're walking or moving, which helps optimize voice recognition accuracy and automatically adjust microphone sensitivity for better audio recording quality during different activities. NSPhotoLibraryUsageDescription Photo library permission is required to save recording files and import audio files + NSUserTrackingUsageDescription + This identifier will be used to deliver personalized ads to you. SKAdNetworkItems UIApplicationSupportsIndirectInputEvents @@ -127,11 +127,12 @@ LaunchScreen UIMainStoryboardFile Main - UISupportedInterfaceOrientations + UISupportedInterfaceOrientations~ipad - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortrait + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight UIViewControllerBasedStatusBarAppearance diff --git a/local_plugins/spotify_sdk/ios/spotify_sdk.podspec b/local_plugins/spotify_sdk/ios/spotify_sdk.podspec index dbb91fa4b..8f96b27c5 100644 --- a/local_plugins/spotify_sdk/ios/spotify_sdk.podspec +++ b/local_plugins/spotify_sdk/ios/spotify_sdk.podspec @@ -20,7 +20,7 @@ Unofficial Spotify Flutter SDK. # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } s.swift_version = '5.0' - s.prepare_command = './prepare-iOS-SDK.sh' + # s.prepare_command = './prepare-iOS-SDK.sh' s.vendored_frameworks = 'ios-sdk/SpotifyiOS.xcframework' s.preserve_paths = 'ios-sdk/SpotifyiOS.xcframework' end