我如何在首次启动后请求用户许可发送本地通知?

时间:2019-07-06 19:05:53

标签: ios swift notifications swiftui

我想在我的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 :(得分:0)

我最终弄清楚了!这是我所做的:

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

如果有人需要澄清其工作方式,请告诉我! :)