0

Étant donné que UILocalNotification est obsolète dans iOS 10, j'ai mis à jour mon flux de notification local à l'aide du cadre UNUserNotification.iOS 10 Son personnalisé UserNotifications en mode d'arrière-plan

L'application joue son personnalisé à l'aide AVPlayer lorsque l'application est au premier plan et il fonctionne très bien. Mais en mode lorsque la notification locale est déclenchée, au lieu d'un son personnalisé, un son de notification par défaut est en cours de lecture. Cependant, les choses fonctionnaient bien dans iOS9, en utilisant "didReceiveLocalNotification" app méthode peut jouer un son personnalisé, même en mode d'arrière-plan.

Mise à jour 1:

J'installe une notification locale comme suit:

let content = UNMutableNotificationContent() 
content.title = NSString.localizedUserNotificationStringForKey("reminder!", arguments: nil) 
content.body = NSString.localizedUserNotificationStringForKey("Reminder body.", arguments: nil) 
if let audioUrl == nil { 
    content.sound = UNNotificationSound.defaultSound() 
} else { 
    let alertSound = NSURL(fileURLWithPath: self.selectedAudioFilePath) 
    content.sound = UNNotificationSound(named: alertSound.lastPathComponent!) 
} 
content.userInfo = infoDic as [NSObject : AnyObject] 
content.badge = 1 
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false) 
let identifier = "Reminder-\(date)" 
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) 
let center = UNUserNotificationCenter.currentNotificationCenter() 
center.addNotificationRequest(request, withCompletionHandler: { (error) in 
    if error != nil { 
     print("local notification created successfully.") 
    } 
}) 

J'ai déjà passé par beaucoup de SO questions mais n'a pas obtenu la solution.

Toute aide sera grandement appréciée!

+0

S'il vous plaît montrer le code que vous avez essayé – paper1111

+0

vous l'avez fixe ... mais [cette question] (http: // stackoverflow .com/questions/42495439/sound-issues-corrige-pour-ios-10-push-notifications) peut venir à utiliser dans un proche avenir: – Honey

Répondre

1

Découvert que alertSound n'a pas le bon chemin de fichier, d'où le content.sound ne définit rien. Je sauvais le dossier enregistré dans le dossier de documents et l'extraction de chemin de fichier pour le vrai dispositif est différent par rapport au simulateur.

Définition d'un fichier son qui est placé dans faisceau de projet a fait l'affaire

content.sound = UNNotificationSound(named: "out.caf") 
0

Dans votre package de notifications push, vous devez inclure le son personnalisé que vous souhaitez lire en arrière-plan. Ce son doit également être inclus dans votre application. Par exemple, voici comment je crée un package de notification personnalisé en PHP pour iOS. Remarquez dans mon objet de notification que j'ai un objet sonore.

array("to" => $sDeviceID, 
        "data" => array($sMessageType => $sMessage, 
            "customtitle" => $sMessageTitle, 
            "custombody" => $sMessage, 
            "customimage" => "$mIcon") , 
        "notification" => array("title" => "sMessageTitle", 
            "text" => $sMessage, 
            "icon" => "$mIcon", 
            "sound" => "mySound.mp3")); 
+0

Merci pour votre aimable réponse. Mais j'utilise 'LocalNotification' pas push/remote. Mon application enregistre un son et le sauvegarde, puis déclenche une notification locale qui doit être lue en arrière-plan. Merci – NSIceCode

0

Voici comment créer une notification à l'aide du cadre UserNotifications avec un son personnalisé.

Si notification est votre UNNotificationContent et le nom de votre fichier multimédia personnalisé qui est dans votre paquet est a.mp4, il suffit d'utiliser le code suivant:

notification.sound = UNNotificationSound(named: "a.mp4") 

Donc, vous n'avez pas besoin d'utiliser didRecieveLocalNotification .