问题描述
我正在使用 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"
会改变它