diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index cbcbc2de7..0a7a4df09 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -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,8 +539,14 @@
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 = 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,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
@@ -572,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;
@@ -589,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;
@@ -654,7 +662,7 @@
NEW_SETTING = "";
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
+ TARGETED_DEVICE_FAMILY = 1;
};
name = Debug;
};
@@ -709,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;
@@ -734,9 +742,15 @@
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 = 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;
+ TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@@ -761,8 +775,14 @@
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 = 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,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 3e7a2de00..f1195f0fc 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
@@ -102,15 +98,19 @@
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
+ 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
- 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
+ NSUserTrackingUsageDescription
+ This identifier will be used to deliver personalized ads to you.
+ SKAdNetworkItems
+
UIApplicationSupportsIndirectInputEvents
UIBackgroundModes
@@ -119,22 +119,20 @@
audio
location
+ UIDeviceFamily
+
+ 1
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
Main
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
UISupportedInterfaceOrientations~ipad
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
+ 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/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/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/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, *) {
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
diff --git a/pubspec.yaml b/pubspec.yaml
index fb92cb9b7..bc5b4ea8c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -70,6 +70,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