Swift -Как изменить push-уведомление && звук из самого приложения? - PullRequest
0 голосов
/ 04 июля 2019

В моем приложении я отправляю тихие push-уведомления "content-available": 1.

На стороне получателя они могут перейти к настройкам внутри приложения и включить уведомления и звук.

Я знаюЯ могу использовать этот код, чтобы узнать статус либо внутри приложения

UNUserNotificationCenter.current().getNotificationSettings { (settings: UNNotificationSettings) in
        guard settings.authorizationStatus == .authorized else { return }

        let soundSetting: UNNotificationSetting = settings.soundSetting
        switch soundSetting {
        case .enabled:
            print("enabled")
        case .disabled:
            print("disabled")
        case .notSupported:
            print("???")
        }

        let badgeSetting: UNNotificationSetting = settings.badgeSetting
        switch badgeSetting {
        case .enabled:
            print("enabled")
        case .disabled:
            print("disabled")
        case .notSupported:
            print("???")
        }

        UIApplication.shared.registerForRemoteNotifications()
    }

Вопрос в том, как изменить статус самого notification или sound из самого приложениябез отправки пользователя за пределы приложения?

lazy var switchNotificationControl: UISwitch = { ... }
lazy var switchSoundControl: UISwitch = { ... }

@objc func switchValueDidChange(_ sender: UISwitch) {
    if (sender.isOn == true) {

       // set notifications to on/true or sound to on/true
    } else {

       // set notifications to off/false or sound to off/false
    }
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Кажется, он не сможет изменить его программно после того, как пользователь примет или отклонит разрешение push-уведомлений. Вы можете отослать эту статью от Apple .

Когда приложение с push-поддержкой регистрируется впервые для push-уведомлений, iOS спрашивает пользователя, хотят ли они получать уведомления для этого приложения. После того, как пользователь ответил на это предупреждение, оно больше не будет отображаться, пока устройство не будет восстановлено или приложение не будет удалено в течение как минимум одного дня.

Так что лучший способ включить / отключить push-уведомления - это сделать это с вашего сервера.

0 голосов
/ 04 июля 2019

Кажется, что невозможно сделать это из самого приложения

https://stackoverflow.com/a/33520827/4833705

https://stackoverflow.com/a/36654919/4833705

Также я попробовал код ниже икогда уведомления были включены (из-за пределов приложения), я использовал их, чтобы отключить их, и это ничего не делало.

@objc func switchValueDidChange(_ sender: UISwitch) {
    if (sender.isOn == true) {

       // *** doesn't work ***
       UIApplication.shared.registerForRemoteNotifications()

    } else {

       // *** doesn't work ***
       UIApplication.shared.unregisterForRemoteNotifications()
    }
}
...