Я знаю, что в SOF много вопросов, но это "самый новый". Дело в том, что я пытаюсь создать приложение и приложение для сигнализации, и я знаю, что там есть приложения для аварийных ситуаций, которые отлично работают (как-то), даже если приложение не работает и находится в фоновом режиме.
Мой вопрос: как вы начинаете играть звук после, ваше приложение уже находится в фоновом режиме?
UILocalNotification отличная, но вы получите только application:(_:didReceiveLocalNotification:)
после того, как пользователь уже нажал на ваше уведомление, поэтому воспроизведение звука с использованием AVAudioPlayer не сработало, я хочу играть звук независимо от того, когда пользователь нажимает на него или не делает "т. Конечно, уже с Required background modes: App plays audio or streams audio/video using AirPlay
в info.plist
. Как только музыка начинает играть, она продолжает играть, даже если я иду на задний план.
Я не хочу использовать звук UILocalNotificaation, который ограничивается 30 секундами, и только способный воспроизводить звуки, связанные с приложением.
Любые идеи? мысли??
Пример кода:
var notif = UILocalNotification()
notif.fireDate = self.datePicker.date
notif.alertBody = "test"
UIApplication.sharedApplication().scheduleLocalNotification(notif)
приведенный выше код вызывается, когда пользователь выбирает и выдает предупреждение, а клики сохраняют.
и вот что происходит в AppDelegate:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
NSLog("launched")
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert |
UIUserNotificationType.Badge, categories: nil
))
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
self.sound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound", ofType: "caf"))
self.audioPlayer = AVAudioPlayer(contentsOfURL: sound, error: nil)
return true
}
func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!){
audioPlayer.play()
NSLog("received local notif")
}
Вам нужно удержать сильную ссылку на AVAudioPlayer
btw, поэтому он не будет выпущен, а audioplayer.play()
ничего не сделает...