Я хочу слушать уведомления, когда приложение переходит в фоновый режим и возвращается. Я пытаюсь использовать издателей NotificationCenter, и представление SwiftUI их слушает.
Я могу использовать несколько методов для этого, и я пытаюсь использовать два из них, но интересно то, что хотя все кажется законным, когда я помещаю подписчика в метод init()
, он просто не работает.
Я попытался поместить его в ветку main
, но безуспешно.
Кто-нибудь знает, почему?
Вот мой код:
struct ContentView: View {
@State var isActive = true
@State var cancellables = Set<AnyCancellable>()
var body: some View {
ZStack {
Image("background")
.resizable()
.scaledToFill()
.edgesIgnoringSafeArea(.all)
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willResignActiveNotification)) { _ in
self.isActive = false
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification), perform: {_ in
self.isActive = true
})
}
init() {
NotificationCenter.default.publisher(for: UIApplication.willResignActiveNotification)
// .receive(on: RunLoop.main)
.sink(receiveValue: { _ in
print("init")
}
.store(in: &cancellables)
}
}
Как ни странно, слушатель в модификаторе onReceive
работает как шарм. В init()
print("init")
никогда не вызывается.