I'm using the following code to request push and local notification permission:
let application = UIApplication.shared
let settings: UIUserNotificationSettings = UIUserNotificationSettings( types: [.alert, .badge, .sound], categories: nil )
application.registerUserNotificationSettings( settings )
When the user has either granted or denied permissions, the callback method in the app delegate is
application(_:didRegister:) which is the method you should use for taking specific actions based on the user's chosen permission settings. I suggest reading the documentation here.