SwiftUI 通知单击转到特定视图

问题描述

我正在使用 SwiftUI 2.0 并且我正在尝试实施 firebase 推送通知。 在新的 SwiftUI 应用程序结构中,没有 AppDelegate 和 SceneDelegate,所以我创建了 AppDelegate 类。我设法接收通知,但无法在单击通知时转到特定视图。 这是我的代码

@main
struct swiftUiApp: App {


@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate


var body: some Scene {
    WindowGroup {
       
            ContentView() 
         
    }
  } 
}

和 AppDelegate 扩展:

func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void) {

let  orders =  Orders()

let userInfo = response.notification.request.content.userInfo
// Print message ID.
if let messageID = userInfo[gcmMessageIDKey] {
  print("Message ID: \(messageID)")
}

if(userInfo["gcm.notification.type"] != nil){
    if(userInfo["gcm.notification.type"] as! String == "order"){
  
          //here I need to navigate to OrderView

        }
    

    }

}

解决方法

这是您要找的吗?

@main
struct swiftUiApp: App {

    
    @AppStorage("ViewSelection") var ViewSelection = "SetupView" // Can be another type

    var body: some Scene {

        WindowGroup {
            TabView(selection: $ViewSelection) {

                SetupView().tag("SetupView")
                ContentView().tag("ContentView")

            }
        .tabViewStyle(PageTabViewStyle())
        .indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))

        }

    }

}

只需确保将视图名称更改为您自己的名称

ViewSelection 是一个绑定,所以就像

ViewSelection = "ContentView"

会改变它