Как попросить пользователя разрешить отправлять локальные уведомления после первоначального запуска? - PullRequest
1 голос
/ 06 июля 2019

Я хотел бы использовать локальные уведомления в своем приложении SwiftUI, но сначала мне нужно получить разрешение пользователя.Однако в документации Apple я вижу информацию о запросе разрешения только при первом запуске приложения.

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

До сих пор я настраивал пользователя«Продолжить» на предыдущем экране (NotifPermissionScreen, см. Ниже) затем перейдите на пустой экран, где единственное, что требуется, - это предпочтение уведомления.После этого я хотел бы загружать в разных представлениях в зависимости от того, разрешены они уведомления или нет.

Любая помощь будет принята с благодарностью!:)

Я использую Xcode 11 beta 3, и я делаю свое приложение в SwiftUI.

struct NotifPermissionScreen : View {
    var body: some View {

        // Show notification preference message


        if (notificationsAllowed) {
            SetupScreen3()
        } else {
            SetupScreen4()
        }
    }
}

// ПРИМЕЧАНИЕ: я понятия не имею, является ли notificationsAllowed реальной переменной,но этот код представляет общую структуру того, что я пытаюсь сделать

1 Ответ

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

Я все понял! Вот что я сделал:

var body: some View {
    if !hasPressedNotifButton {
        Button(action: {

            // Request permission to send notifications
            self.center.requestAuthorization(options: [.alert, .sound])
            { (granted, error) in

                // Hide this button by setting this @State variable to true
                self.hasPressedNotificationsButton = true

                if granted {
                    // Edit the user's data for later use
                    self.userData.wantsNotifications = true
                }
            }
        }) {
            Text("Set Notifications")
        }
        if self.userData.wantsNotifications {
            WantsNotifsView()
        } else {
            NoNotifsView()
        }
    }
}

Если кому-то нужны какие-либо разъяснения о том, как это работает, пожалуйста, дайте мне знать! :)

...