Ad

Playing A Custom Sound On Receiving A Remote Push Notification On IOS 12 From FCM

I am trying to get a custom sound to play when a REMOTE notification is received while the app is either closed completely or in the background, but everything that I have tried has not worked.

The Audio file that I am using is a .caf file which is supported, it is 20 seconds long which is within apple's limits. The file is located in the main app bundle, not within a specific scheme. and my register for remote notifications is registered with .Sound.

Here is a screenshot of my XCode project manager, showing where my custom sound is located. BundleScreenshot

The code that sends a Remote Notification from a firebase function:

userData.tokens.forEach(async token => {
    console.log("Token: "+token);
    const message = {
        data: {
            type: "type"
        },
        android: {
            priority: "high"
        },                  
        notification: {
            "title": "Title of message",
            "sound": "customSound.caf"
        },
        apns: {
            headers: {
                "apns-priority": "10"
            },
            payload: {
                aps: {
                    sound: "customSound.caf"
                },
                    sound: "customSound.caf"
                }
            },
            token: token
        };
    console.log(message);
    await admin.messaging().send(message);
});

Here is what my register code looks like within my AppDelegate:

if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
    UNUserNotificationCenter.current().delegate = self
    Messaging.messaging().delegate = self
} else {
    let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
    application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

I have even tried rebooting my device because that was a bug that I read about on another Stack Overflow but that didn't do anything. If it helps I am running iOS 12.1.4 on a 6th generation iPad.

Thanks for any suggestions.

EDIT Just forgot, I have this in my info.plist file as well

<key>UILocalNotificationDefaultSoundName</key>
    <string>OnceAgainNotification.caf</string>  
Ad

Answer

Your sound name that is sent through firebase has to match the name of the sound file with it's extension.

Also, make sure that the files are correctly implemented in the project from build phases.

Regarding the default sound, Changing the default sound name through info.plist is deprecated after iOS 10.

https://developer.apple.com/documentation/uikit/uilocalnotificationdefaultsoundname

Ad
source: stackoverflow.com
Ad