如何访问默认iOS声音并将其设置为通知声音?

10

我该如何访问默认的iOS声音(三音、钟声、玻璃、号角、铃铛、电子...),将其设置为本地通知的声音?

我已经创建了本地通知,一切正常,但是使用的是默认的声音(即三音)。我想使用钟声或其他声音。

我只知道如何使用自己的声音文件:

localNotif.soundName = @"sound.wav";

你是如何访问“三音调”声音的?我找不到正确的声音ID。谢谢! - DZenBot
3个回答

12

看看这个网站。

如果你想播放默认的系统声音,请参考下面的代码,但是私有框架会被拒绝。

AudioServicesPlaySystemSound(1004);

还可以查看其他示例代码(不支持使用私有框架)。


3
很遗憾,系统声音对您的应用程序不可用。根据文档

注意:系统提供的警报声音和系统提供的用户界面音效对于您的iOS应用程序不可用。例如,将kSystemSoundID_UserPreferredAlert常量用作AudioServicesPlayAlertSound函数的参数将不会播放任何内容。

更新

尽管苹果公司说您无法访问系统声音,但我想他们必须是指您不能为自己的目的访问它们,但我看到 UILocalNotification.h 提供:

UIKIT_EXTERN NSString *const UILocalNotificationDefaultSoundName; 

当通知警报显示时,可以通过此属性指定默认的系统声音。您需要将该值分配给soundName属性。目前我在我的应用程序中使用它,似乎很正常。


Ben,你的应用程序通过认证并在 App Store 上线了吗? - Kenny Lim
@KennyLim 是的,但让我稍后再确认一下,确保这段代码在其中。我有95%的把握它在里面。 - Ben Flynn
上面引用的系统提示仅意味着在iOS上无法访问定义访问系统声音的常量,而不意味着实际声音在iOS上不可用。MacOS有声音设置(以前是控制面板),可以让您设置警报声等。这就是这些常量所指的内容。 - chadbag

2
音频服务并非私有。相关方法已在开发者参考手册中进行了记录,并在多媒体编程指南中引用。
如果您想播放特定声音,您只需要找到其参考ID即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接