I want to show a view, after my App received an APNS-Push Notification. I'm using SwiftUI. I followed this tutorial (https://blckbirds.com/post/how-to-navnigate-between-views-in-swiftui-by-using-an-environmentobject/) to create a motherView and a ViewRouter.
MotherView looks like that:
struct MotherView: View {
// MARK: - Properties
@EnvironmentObject var viewRouter: ViewRouter
@State private var isMenuVisible: Bool = false
var body: some View {
VStack {
if viewRouter.currentPage == Constants.Views.login {
Login_SwiftUIView()
} else if viewRouter.currentPage == Constants.Views.main {
MainView(withMenu: $isMenuVisible)
} else if viewRouter.currentPage == Constants.Views.menu {
Menu_SwiftUI(withMenu: $isMenuVisible)
} else if viewRouter.currentPage == Constants.Views.push {
PushView()
}
}
}
}
ViewRouter is a ObservableObjectClass
class ViewRouter: ObservableObject {
let objectWillChange = PassthroughSubject<ViewRouter,Never>()
var currentPage: Constants.Views = Constants.Views.login {
didSet {
objectWillChange.send(self)
}
}
}
The AppDelegate calls this function, after receiving a Push-Notification:
func presentView(with pushNotification: [String: AnyObject]) {
//Here I want to set the viewRouter.currentPage = Constants.View.push
}
What would be your suggestions to solve this problem?