ios - 自定义通知式弹出窗口
问题描述
当推送通知到达并且应用程序处于前台时,我需要显示自定义弹出窗口。它必须来自屏幕的上边缘,保持可见几秒钟,然后消失在上边缘后面。
我的问题是如何显示它?据我所知,为了使视图可见,我必须将其作为子视图添加到某些现有视图中。但是推送通知可能会随机出现,所以我事先不知道哪个视图控制器会在那个时候处于活动状态。
那么:我在哪里附加我的自定义视图(使其在所有内容之上可见)?
解决方案
您需要在您的 appDelegate 中实现以下委托,您的推送通知也将出现在前台。
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
completionHandler()
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
在点击通知时,您可以获得与应用程序处于后台时相同的行为。
推荐阅读
- r - 基于data.table R中列的不等式*滚动*条件的滚动值
- laravel - 根据第一个字段 Laravel 的值向第二个字段添加值
- regex - 如何匹配mongoquery中的浮点值?
- python - 用于在用户之间“共享”API 调用的 Web 架构
- python-3.x - 迭代合并不同数量的行
- arduino - 如何将 Bacnet 集成到 arduino
- flutter - 在 SharedPreferences 和对象解码上颤振“NoSuchMethodError(NoSuchMethodError:getter 'length' was called on null” *仅限首次启动*
- spring-boot - 如果没有休息控制器,没有请求映射注释,swagger 将如何与 spring boot 一起工作?
- javascript - 带有 cocos creator 问题的 ARjs
- selenium - 无法验证 Klarna 付款,结帐时未保留为出生日期键入的值(Selenium、Chrome 驱动程序)