在从FCM收到iOS 12上的远程推送通知时播放自定义声音

时间:2019-04-11 14:13:23

标签: ios swift firebase apple-push-notifications

在应用程序完全关闭或在后台关闭时收到 REMOTE 通知时,我正在尝试播放自定义声音,但是我尝试执行的所有操作均无效。

我正在使用的音频文件是一个受支持的.caf文件,它的长度为20秒,在苹果的允许范围内。该文件位于主应用程序包中,而不位于特定方案中。我的远程通知注册人已向.Sound注册。

这是我的XCode项目经理的屏幕截图,显示了我的自定义声音所在的位置。 BundleScreenshot

从firebase函数发送远程通知的代码:

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);
});

这是我的注册代码在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()

我什至尝试重新启动设备,因为那是我在另一个Stack Overflow上读到的错误,但没有执行任何操作。如果有帮助,我可以在第六代iPad上运行iOS 12.1.4。

谢谢您的建议。

编辑 只是忘了,我的info.plist文件中也有这个

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

1 个答案:

答案 0 :(得分:1)

您通过Firebase发送的声音名称必须与扩展名为

的声音文件上的名称匹配

还要确保在构建阶段就已在项目中正确实施了文件

关于默认声音,iOS 10之后不建议通过info.plist更改默认声音名称

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