如何在iOS中收到横幅通知的通知?

时间:2013-08-12 00:08:39

标签: iphone ios objective-c notifications uikit

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

Banner Notification

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

1 个答案:

答案 0 :(得分:2)

今天早上我抓了它,我倾向于说这没有公共API。

我尝试使用概述here的代码,但没有收到任何通知。然后,我跑了一堆“测试”,看看能不能找到任何东西。

为了测试,我创建了一对应用程序one to schedule notifications (GitHub link)one to try and "catch" them (GitHub link)。在我的Sender应用程序中,我可以每N秒发送N个通知。我选了一些任意高的值并发送给他们。

在我的捕手中,我尝试在图层层次结构中上下查看visibleRect值。 (keyWindow生活在一个层中,但它是superview,而super layer.delegate都是nil)我没有检查约束,但这不重要。我查看了应用程序的窗口,它是nil superview,它是图层,它是子视图。应用程序的界限也不受影响。应用程序沙盒很好,应用程序世界中不存在跳板和通知中心。

我开始走私客框架的道路,但决定不值得努力。

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

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

我曾经想过的另一个想法是在推送端口上听取推送通知,但我怀疑Apple会允许你抓住另一个应用程序的通知。作为开发人员,我不会在警报中发送私人信息,但它仍然是一个问题。

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