如何在我的Xamarin.iOS应用程序中播放iPhone铃声?

时间:2016-05-04 09:10:40

标签: c# mobile xamarin xamarin.ios ringtone

我似乎无法在互联网上找到任何关于它的内容..

我需要在特定事件上触发铃声(稍后可由用户选择),但现在只需播放铃声(或音乐)即可。

1 个答案:

答案 0 :(得分:2)

没有SDK API可以在iOS上播放铃声,但您可以播放本地文件。您是否看过Xamarin教程Playing Sound with AVAudioPlayer

这样可以播放本地文件:

// Initialize background music
songURL = new NSUrl("Sounds/"+filename);
NSError err;
backgroundMusic = new AVAudioPlayer (songURL, "wav", out err);
backgroundMusic.Volume = MusicVolume;
backgroundMusic.FinishedPlaying += delegate { 
    backgroundMusic = null;
};
backgroundMusic.NumberOfLoops=-1;
backgroundMusic.Play();
backgroundSong=filename;

如果是消息声音(≤30秒),而不是铃声,您可以尝试使用AudioServicesPlaySystemSound

以下是所有system sound Ids的列表,也是此GitHub的列表。 1007是标准的Tri-Tone通知声音。

AudioServicesPlaySystemSound(1003);

在使用AudioServicesPlaySystemSound时,有一些关于您的应用被拒绝的说法,但我看不出任何可靠的证据,这里是Apple的示例代码,可以播放system sound

iOS SDK不捆绑这些声音文件,但它们位于/System/Library/Audio/UISounds/文件夹中的设备上。铃声位于此/Library/Ringtones/有人提到这些是受版权保护的,所以如果你将它们捆绑在你的应用中,那么要小心。

然后播放声音:

var s = new SystemSound (soundId);
s.PlayAlertSound ();

小心

捆绑来自Apple的受版权保护的声音可能会导致您的应用被拒绝