Files
prop-ai-hr/mobile-uni/src/manifest.json
T
adminandClaude Opus 5 7096545e82 fix(mobile): translate microphone errors and pre-request permission
实时陪练失败时,getUserMedia 抛出的 Chromium 英文原文会直接透给用户(真机实测见过
"Could not start audio source"),既不可读也不含任何可执行指引。新增
utils/microphone.ts 把权限、设备占用、无设备、非安全上下文四类底层错误翻译成中文
引导;业务层自己抛的中文文案原样透出,未识别的错误回落到原有通用提示。

同时在建会话之前主动申请 RECORD_AUDIO,并在 manifest 显式声明该权限。

需要说明:此权限预申请是防御性的。真机核查 RECORD_AUDIO 已授予、APK 本就声明该权限、
实时链路可正常跑通,先前那次 "Could not start audio source" 是麦克风被其他应用占用
的瞬时故障,不是权限缺陷。未在"权限未授予"的设备上实测过 WebView 是否会自行弹出
Android 运行时授权框,故此调用在已授权设备上为无害空转;若确实不弹,则它是唯一授权入口。
manifest 声明同样只为防未来模块调整导致权限丢失。

新增 6 项单测覆盖错误映射与授权分支(共 168 项通过)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 00:58:40 +08:00

118 lines
5.4 KiB
JSON

{
"name" : "帮道",
"appid" : "__UNI__B36D8BE",
"description" : "帮道员工端",
"vueVersion" : "3",
"versionName" : "0.1.5",
"versionCode" : "105",
"uniStatistics" : {
"enable" : false
},
"app-plus" : {
"checkPermissionDenied" : true,
"screenOrientation" : [ "portrait-primary" ],
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : false
},
"safearea" : {
"background" : "#f7f8fa",
"bottom" : {
"offset" : "auto"
}
},
"ssl" : {
"untrustedca" : "refuse"
},
"distribute" : {
"icons" : {
"android" : {
"hdpi" : "src/static/app/icons/android-hdpi.png",
"xhdpi" : "src/static/app/icons/android-xhdpi.png",
"xxhdpi" : "src/static/app/icons/android-xxhdpi.png",
"xxxhdpi" : "src/static/app/icons/android-xxxhdpi.png"
},
"ios" : {
"appstore" : "src/static/app/icons/ios-appstore.png",
"iphone" : {
"app@2x" : "src/static/app/icons/ios-iphone-app-2x.png",
"app@3x" : "src/static/app/icons/ios-iphone-app-3x.png",
"spotlight@2x" : "src/static/app/icons/ios-iphone-spotlight-2x.png",
"spotlight@3x" : "src/static/app/icons/ios-iphone-spotlight-3x.png",
"settings@2x" : "src/static/app/icons/ios-iphone-settings-2x.png",
"settings@3x" : "src/static/app/icons/ios-iphone-settings-3x.png",
"notification@2x" : "src/static/app/icons/ios-iphone-notification-2x.png",
"notification@3x" : "src/static/app/icons/ios-iphone-notification-3x.png"
},
"ipad" : {
"app" : "src/static/app/icons/ios-ipad-app.png",
"app@2x" : "src/static/app/icons/ios-ipad-app-2x.png",
"proapp@2x" : "src/static/app/icons/ios-ipad-pro-app-2x.png",
"spotlight" : "src/static/app/icons/ios-ipad-spotlight.png",
"spotlight@2x" : "src/static/app/icons/ios-ipad-spotlight-2x.png",
"settings" : "src/static/app/icons/ios-ipad-settings.png",
"settings@2x" : "src/static/app/icons/ios-ipad-settings-2x.png",
"notification" : "src/static/app/icons/ios-ipad-notification.png",
"notification@2x" : "src/static/app/icons/ios-ipad-notification-2x.png"
}
}
},
"splashscreen" : {
"iosStyle" : "default",
"ios" : {
"iphone" : {
"retina40" : "src/static/app/splash/ios-iphone-retina40.png",
"retina47" : "src/static/app/splash/ios-iphone-retina47.png",
"retina55" : "src/static/app/splash/ios-iphone-retina55.png",
"iphonex" : "src/static/app/splash/ios-iphone-x.png",
"portrait-896h@2x" : "src/static/app/splash/ios-iphone-896h-2x.png",
"portrait-896h@3x" : "src/static/app/splash/ios-iphone-896h-3x.png"
},
"ipad" : {
"portrait7" : "src/static/app/splash/ios-ipad-portrait7.png",
"portrait-retina7" : "src/static/app/splash/ios-ipad-portrait-retina7.png",
"portrait-1112h@2x" : "src/static/app/splash/ios-ipad-1112h-2x.png",
"portrait-1194h@2x" : "src/static/app/splash/ios-ipad-1194h-2x.png",
"portrait-1366h@2x" : "src/static/app/splash/ios-ipad-1366h-2x.png"
}
},
"androidStyle" : "default",
"android" : {
"hdpi" : "src/static/app/splash/android-hdpi.png",
"xhdpi" : "src/static/app/splash/android-xhdpi.png",
"xxhdpi" : "src/static/app/splash/android-xxhdpi.png"
},
"androidTranslucent" : false,
"androidNavigationBarColor" : "#F7F8FA"
},
"android" : {
"packagename" : "com.yincheng.wygj",
"abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
"permissions" : [
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
]
},
"ios" : {
"appid" : "com.yincheng.wygj",
"devices" : "universal",
"deploymentTarget" : "15.0",
"privacyDescription" : {
"NSMicrophoneUsageDescription" : "用于录制训练、提问和面试回答,并将音频转写为文本。",
"NSPhotoLibraryUsageDescription" : "用于选择图片或视频作为本次问题、资料或成果投稿的附件。"
},
"dSYMs" : false
}
},
"modules" : {
"Camera" : {},
"Record" : {}
}
},
"h5" : {
"router" : {
"base" : "/h5/"
}
}
}