#ios #swift #apple-push-notifications
#iOS #swift #apple-push-уведомления
Вопрос:
Я пытаюсь добиться чего-то вроде find my iPhone app. Даже в выключенном состоянии он будет воспроизводить звук на полной громкости. Я не хочу использовать для этого VOIP-вызовы, потому что моему приложению это не нужно, поэтому оно может быть отклонено.
Вот что я пытаюсь сделать:
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
var audioPlayer = AVAudioPlayer()
let songTitle = "ping"
let songExtension = "mp3"
if let url = Bundle.main.url(forResource: "(songTitle)", withExtension: "(songExtension)") {
let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider{
view.value = 1.0 //---0 t0 1.0---
}
do {
let data = try Data(contentsOf: url)
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, options: .mixWithOthers)
try AVAudioSession.sharedInstance().setActive(true)
audioPlayer = try AVAudioPlayer(data: data, fileTypeHint: AVFileType.mp3.rawValue)
audioPlayer.volume = 1.0
audioPlayer.prepareToPlay()
audioPlayer.play()
} catch let error {
print("[SoundPlayer] There was an error: (String(describing: error))")
}
if (audioPlayer.isPlaying) {
audioPlayer.stop()
}
audioPlayer.play()
}
if let bestAttemptContent = bestAttemptContent {
// Modify the notification content here...
bestAttemptContent.title = "(bestAttemptContent.title) [modified]"
contentHandler(bestAttemptContent)
}
}
Всякий раз, когда я пытаюсь отладить приложение, я получаю сбой с ошибкой:
Ошибка Domain=NSOSStatusErrorDomain Code= 561015905 «(null)»
Ответ №1:
Вы не можете этого сделать. Apple может отключить режим отключения звука в экстренной ситуации, например, при поиске устройства. Вы не Apple, поэтому вы не можете получить специальное разрешение на воспроизведение звука в вашем уведомлении, которое переопределяет режим отключения звука.
Комментарии:
1. Привет, Мэтт, я наткнулся на criticalAlertSetting, который может помочь достичь моей цели: developer.apple.com/documentation/usernotifications/… Подход, который я использовал, был неправильным.