macOS Big Sur 11.3自定义通知声音无法生效的技术求助
macOS Big Sur自定义通知声音不生效的排查方案
我之前做类似项目时也踩过这个坑,macOS的UNNotificationSound对自定义声音的要求比iOS更严格一点,给你几个实用的排查方向:
检查声音文件格式是否符合要求:macOS通知声音要求WAV文件必须是线性PCM编码(不能是压缩格式),推荐采样率44.1kHz、16位深度,单声道或立体声均可。你可以用Audacity这类工具重新导出符合标准的WAV文件,格式不对的话系统会自动 fallback 到默认声音。
去掉文件名后缀调用:
soundNamed:方法不需要带.wav后缀,直接传入文件名即可。修改代码如下:content.sound = [UNNotificationSound soundNamed:@"example"];系统会自动在bundle中查找匹配的声音资源,带后缀反而可能导致匹配失败。
确认文件确实被打包进bundle:除了检查Xcode的
target > Build Phases > Copy Bundle Resource列表,还可以右键你的App包(选择「Show Package Contents」),查看Contents/Resources目录下是否存在example.wav,并且文件名大小写完全一致(虽然macOS文件系统默认不区分大小写,但代码中的名称必须和实际文件名完全匹配)。重新确认通知权限:虽然默认声音能播放,但偶尔权限缓存也会出问题,可以尝试重新请求一次权限:
UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter]; [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionSound) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted) { NSLog(@"通知权限已确认"); } }];清理缓存并重启:Xcode的资源缓存或系统缓存可能导致文件未被正确加载,尝试重启App,甚至重启Mac后再测试,很多时候这个小步骤就能解决问题。
内容的提问来源于stack exchange,提问作者hitechnet
相关产品推荐
相关产品推荐

