当我处理用户拒绝通知的情况时,不会触发onReceive块。如果用户接受提示提示,则可以正常工作。任何帮助,将不胜感激。以下是必要的代码段:
import SwiftUI
struct UIView: View {
@ObservedObject var loginViewModel = LogInViewModel()
...
var body: some View {
VStack {
...
Button(action: {
UNUserNotificationCenter.current().requestAuthorization(options: [ .alert, .badge, .sound ]) { (success, error) in
if error == nil {
DispatchQueue.main.async {
if success {
UIApplication.shared.registerForRemoteNotifications()
} else {
self.loginViewModel.loginCall(...)
}
}
}
}
}) {
...
}.onReceive(loginViewModel.success) {
print("Login successful!") // <- This doesn't get called if a user doesn't allow the notifications
}
...
}
}
}
import Combine
class LogInViewModel: ObservableObject {
var success = PassthroughSubject<Void, Never>()
...
func loginCall(...) {
async API call here { (result: Result<..., ...>) in
if case .success(...) = result {
DispatchQueue.main.async {
self.success.send()
}
}
}
}
}