实时陪练失败时,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>
118 lines
5.4 KiB
JSON
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/"
|
|
}
|
|
}
|
|
}
|