如何让audio播放在NSDatePicker的时间?

我正在做一个应用程序,需要一个声音在未来由用户使用NSDatePicker设置,我怎么会这样做呢?

我已经有了AVAudioPlayer设置,我只需要帮助自己玩。 请写下如何解决整个问题,而不是引导我到别处。

其目的是获得一个警报,可以由用户在特定的时间使用NSDatePicker并使用我已经做出并添加到项目中的声音。 然后,用户不得不closures闹钟而不是自动closures。 所以我打算使用AVAudioPlayer和一个closuresbutton来实现,但是我无法超越时间。

简短的回答:你不能那样做。

iPhone只是部分时间解锁,而您的应用只能运行部分时间。

如果你正在谈论未来几分钟的声音播放,而电话是清醒的,而应用程序仍在前台,你可以做的。

您只需要从date选取器中获取NSDate ,使用NSDate方法timeIntervalSinceNow来计算将来该date的秒数,然后启动一个NSTimer ,它的select器播放您的声音。

如果您的应用可能被暂停,或手机可能被locking,则需要使用本地通知(UILocalNotification)。 通知只是向用户显示一条消息(可能播放与您的应用程序一起发送的声音)。我想如果您想播放的声音包含在应用程序中,那么您可以设置您的本地通知来播放它。

你能告诉我们更多关于你想做什么的吗?

你希望这个在任何date和时间在未来工作吗? 你需要播放内置于你的应用程序中的声音吗?

对于一个短暂的延迟,你可以告诉AVAudioPlayer 现在开始播放,但延迟,你不使用NSDate(从UIDatePicker返回的值)来做到这一点。 这不是AVAudioPlayer如何考虑时间。 它根据设备时间来考虑

所以,你需要从当前设备播放多长时间开始播放。 这样,您可以调用audio播放器的playAtTime:与该值。 文档中有一个例子:

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/#//apple_ref/occ/instm/AVAudioPlayer/playAtTime

如果要延迟很长时间,那么你需要开始播放,比如说,明天早上10点,你需要创build一个在那个时候会触发的UINotification。 这可以包括一个声音; 如果这还不够好,你将不得不希望你的应用程序正在运行(这样你可以收到通知),或者当用户看到通知时点击通知(这样你就可以听到) – 否则正如邓肯所说,你做不到。