Since upgrading my device (iPhone 11) to iOS 14.0.1, I have found addUIInterruptionMonitor() to not be triggered at all. It was working before on iOS 13.4.1, which was the last version I had installed.
My code:
addUIInterruptionMonitor(withDescription: "App Would Like to Send You Notifications") { (alert) -> Bool in
if alert.buttons["Allow"].exists {
alert.buttons["Allow"].tap()
return true
}
return false
}
XCUIApplication().tap() // interacting with the app to trigger the interruption monitor
Nothing in my code has changed since upgrading - the only thing that has changed is the iOS version installed. Has anyone else encountered similar?
First of all I would suggest you put the interruption monitor in your setUp() function:
Second - if adding a sleep resolves your issue to me this means that this isn't a problem with the iOS version but the behaviour of your application on this iOS version. I've had a similar problem where the dummy tap that should trigger the UIInterruptionMonitor was actually being executed before the prompt has appeared which lead to not handling the prompt. You could create a small expectation that waits for either your app loading(by checking some element is present) or until the prompt has appeared and then perform the dummy tap.