0

我正在创建一个 iOS 原生应用程序。我正在使用 XCode 8,在 iOS10 上进行测试,使用 swift 3。

我正在处理 APNS 并发送远程通知(通过 OneSignal)。

通知在我的应用程序之外完美运行(当它在后台时)。但是,当我将应用程序置于前台时,无论我将什么传递给completionHandler()(例如[.alert, .sound],或[.sound][]),系统都会UIAlertController使用通知的内容(标题和正文)创建一个并将其呈现给用户。作为用户界面,这非常令人讨厌,我想有一些方法可以解决它。

我正在实施UNUserNotificationCenterDelegate如下:

extension ViewController: UNUserNotificationCenterDelegate{
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {


    //This is my BRYXBanner notification presentation/
    let banner = Banner(title: notification.request.content.title, subtitle: notification.request.content.body, image: nil, backgroundColor: .blue, didTapBlock: nil)
    banner.alpha = 0.9
    banner.animationDuration = 0.2
    banner.position = .top
    banner.show(genView, duration: 3.0)


    completionHandler([])
}

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {    
    switch(response.actionIdentifier){
    //switch cases for actions/
    default: break
    }
    completionHandler([])
}
}

我也在实现,UIApplicationDelegate但是那个只是有打印语句。

我收到通知时看到的是: 我为此发送的自定义通知的屏幕截图

我见过其他人遇到过这个问题(如何在 iOS 远程通知上禁用默认通知警报视图?),但不知道他们是如何解决的。大多数帖子只是简单地导致“哦,我修好了”而没有进一步的解释。

如何绕过此通知的显示,无论是使通知静音(如果有效)还是处理完成处理程序或在显示之前拦截通知?

4

0 回答 0