7

我正在编写一个 iOS 应用程序,当操作系统决定显示这样的横幅通知时,我想暂停我的应用程序的动作内容:

横幅通知

是否有一个NSNotification我可以观察的系统或一个我可以响应的被调用的方法?我试过applicationWillResignActive了,但在这种情况下没有调用。

4

1 回答 1

2

今天早上我尝试了一下,我倾向于说没有用于此的公共 API。

我尝试使用此处列出的代码,但没有收到任何通知。然后,我进行了一系列“测试”,看看是否能找到任何东西。

为了进行测试,我创建了一对应用程序,一个用于安排通知(GitHub 链接)一个用于尝试“捕捉”它们(GitHub 链接)。在我的 Sender 应用程序中,我可以每 N 秒发送 N 条通知。我挑选了一些任意高价值的并发送了它们。

在我的捕手中,我尝试在层层次结构上下查看 visibleRect 值。(keyWindow 存在于一个层中,但它是 superview 和 super layer.delegate 都是 nil)我没有检查约束,但这应该没关系。我查看了应用程序的窗口,它是 nil 超级视图,它是层,它是子视图。应用程序的边界也不受影响。该应用程序的沙盒非常好,以至于该应用程序的世界中不存在跳板和通知中心。

我开始走上访问私有框架的道路,但认为这不值得。

我打开了 Instruments 并查看了视图的透明度级别。(是否可以强制层次结构中的所有视图不透明,然后使用它来查看横幅是否阻塞了某些东西?如果它是透明的,也许它不是“阻塞”?)

我还尝试截取屏幕截图,并检查屏幕顶部区域的颜色,但这不起作用,因为您需要将视图传递给上下文。即使它可以工作,它也不会特别高效。

我的另一个想法是在推送端口上监听推送通知,但我怀疑 Apple 是否会允许您捕获另一个应用程序的通知。作为开发人员,我不会在警报中发送私人信息,但这仍然是一个问题。

事实上,通知横幅并不会真正导致您的应用程序变为非活动状态,因此我不确定这种行为是否错误。如果方便,请提交错误。请求DeviceWillShowNotificationNotification呢?

于 2013-08-12T16:42:08.983 回答