1

我正在使用UNNotificationServiceExtension将图像添加到 iOS APNS 通知。它运行良好,只是即使应用程序处于活动状态(在前台)也会显示通知。当应用程序处于活动状态时,我想使用 toast 处理通知,而不是在活动应用程序的顶部显示标准 iOS 通知。

问:有没有办法从通知服务扩展中检测应用程序的状态,并在应用程序处于活动状态时阻止通知显示?

4

2 回答 2

2

根据 Apple 的文档,默认情况下应用程序处于活动状态时不应出现通知。

如果通知到达时您的应用在前台,共享用户通知中心会调用此方法将通知直接发送到您的应用。如果你实现了这个方法,你可以采取任何必要的行动来处理通知和更新你的应用程序。完成后,调用 completionHandler 块并指定您希望系统如何提醒用户(如果有的话)。

是否使用通知服务扩展并不重要 - 通知始终由应用程序处理,但可以先使用扩展来修改它。

试试这段代码(事实上,由于在应用程序处于活动状态时会出现通知,因此您可能在某处实现了此方法 - 如果您不需要它,您可以将其删除)。

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

    // Perform additional handling of the notification, if needed.

    completionHandler([])
}
于 2019-02-11T09:09:00.917 回答
0

completionHandler(.newData)内部调用application(_:didReceiveRemoteNotification:fetchCompletionHandler:)是在应用程序内显示横幅的原因。你可以摆脱它。

func application(_ application: UIApplication,
                   didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                   fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
   // completionHandler(.newData) // <- Comment it out
}
于 2019-02-10T09:46:22.990 回答