AppDelegate 和 ContentView() 之间的 SwiftUI 通信

标签 swiftui cloudkit remote-notifications

我的 SwiftUI 应用程序收到无声远程通知。它不是由 UNUserNotificationCenter 拾取,而是由旧的 AppDelegate didReceiveNotification 函数拾取。通知 ContentView() 发生更改的解决方案是什么? AppDelegate 中的 ObservableObject?

最佳答案

您可以在 AppDelegate 中声明一个符合 ObservableObject 的 store,并将其设置为 ContentView 的环境对象。

// AppDelegate.swift
// in the class
let store = Store()

// in the applicationDidFinishLaunching(_:) method
window.contentView = NSHostingView(rootView: contentView.environmentObject(store))
// ContentView.swift
// in the struct
@EnvironmentObject var store: Store

环境对象是一个引用,因此您可以将值传递给它。与使用 ObservableObject 相同。完成更新后,只需调用 objectWillChange.send() 或将属性标记为 @Published。 ContentView会在收到通知后更新。

关于AppDelegate 和 ContentView() 之间的 SwiftUI 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61832113/

相关文章:

icloud - 估计和测量 CloudKit 数据库使用情况

swift - 点击远程通知后导航栏丢失

swift - iOS/FCM - 如何使用有效载荷中的图像名称将 XCAsset 文件夹中的图像显示为通知附件?

ios - 将 SwiftUI View 渲染为 UIImage

swift - NavigationView 顶部的边界

ios - 忽略 SwiftUI Color 或 View 增加的配色方案对比度

swift - 当用户输入日期/时间字段查询时,我可以对 CKRecord 进行排序吗?

SwiftUI:在带有 SidebarListStyle 的 NavigationView/List 中选择 NavigationLink

ios - CloudKit-不会更新 (Swift)

android - 应用程序终止时 Firebase 推送通知回调不起作用