Включение звука в iOS для звукового оповещения - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь включить звук для своих push-уведомлений Firebase, и я не уверен, есть ли код в делегате приложения, который мне нужно реализовать, или код в моем index.js неправильный.

Я думал, что в AppDelegate нужно было что-то импортировать, связанное со звуком, но все руководства, которые я нашел для реализации push-уведомлений, содержат только базовый код, где [options] содержит единственное, что связано со звуком уведомления. index.js код:

var notification = {
    notification: {
        title: conversation.conversationName,
        body: user.username + ': ' + message.text,
        sound: 'default'
    },
    topic: topic
}

Код делегата приложения: функция, вызываемая в didFinishLaunchingWithOptions.

import UIKit
import Firebase
import UserNotifications

private func attemptRegisterForNotifications(application: UIApplication) {

        Messaging.messaging().delegate = self

        UNUserNotificationCenter.current().delegate = self

        let options: UNAuthorizationOptions = [.alert, .badge, .sound]

        UNUserNotificationCenter.current().getNotificationSettings { (settings) in

            if settings.authorizationStatus == .authorized {
                // Push notifications already authorized, do nothing
                print ("push notifications authorized")
            } else if settings.authorizationStatus == .notDetermined {
                // User hasn't specified notification status
                UNUserNotificationCenter.current().requestAuthorization(options: options, completionHandler: { (granted, error) in
                    if let error = error {
                        print ("Failed to request authorization:", error)
                        return
                    }

                    guard granted else {return}
                    DispatchQueue.main.async {
                        application.registerForRemoteNotifications()
                    }
                })
            } else if settings.authorizationStatus == .denied {
                // User has denied notifications
                UNUserNotificationCenter.current().requestAuthorization(options: options, completionHandler: { (granted, error) in

                    if let error = error {
                        print ("Failed to request authorization:", error)
                        return
                    }

                    let alertController = UIAlertController(title: "Enable Push Notifications", message: "Enable push notifications for optimal chat experience", preferredStyle: .alert)
                    let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
                        guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
                            return
                        }
                        if UIApplication.shared.canOpenURL(settingsUrl) {
                            UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
                            })
                        }
                    }
                    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
                    alertController.addAction(cancelAction)
                    alertController.addAction(settingsAction)
                    alertController.preferredAction = settingsAction
                    DispatchQueue.main.async {
                        self.window?.rootViewController?.present(alertController, animated: true, completion: nil)
                    }
                })
            }
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...