我正在编写一个iOS应用程序,当操作系统决定显示像这样的横幅通知时,我想暂停我的应用程序的动作内容:
是否有我可以观察的系统NSNotification
或被调用的方法我可以做出反应?我试过了applicationWillResignActive
,但在这种情况下没有调用。
答案 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
?