如何在应用程序中禁用iOS通知中心?

时间:2011-10-13 19:25:30

标签: objective-c notifications ios5

如果你有一个全屏iOS应用程序,并且你想阻止通知中心被拉下来,你可以和如何?

您还可以在加载应用时屏蔽通知提醒或横幅广告吗? (我认为这是肯定无法确定的,但想要以防万一。)

4 个答案:

答案 0 :(得分:20)

根据我的经验,默认情况下,全屏应用(statusBarHidden = YES)的通知中心行为略有不同:向下滑动之前状态栏占用的区域只会显示一个小标签。只有滑动选项卡才会显示通知中心。到目前为止,这足以防止我意外激活。

目前,没有用于操纵通知中心行为的公共API。我认为应用程序不太可能能够阻止通知的外观,并且应用程序能够阻止通知中心出现的可能性稍微小一些。 iOS以开发人员自由为代价,提供一致的用户体验体验。如果我是一个无意识的用户,我可以看到被这种功能感到沮丧。

所有这一切,总是存在未记录的API的黑暗面。如果你能在越狱设备上使用那些聪明能力,我不会感到惊讶,但这不是我的杯茶。

答案 1 :(得分:6)

我刚刚想出来了。我正在开发一个横向运行的游戏,每当我触摸左侧时,都会出现通知中心选项卡。要解决此问题,您需要添加以下内容:

setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft

我在setStatusBarHidden之后添加了这个,并且我不再遇到通知选项卡的问题。

希望有所帮助。

答案 2 :(得分:1)

iOS 11中引入了一个API,同时改变了通知中心(和控制中心)的显示方式,从而允许您指定所需的行为。

UIViewController.preferredScreenEdgesDeferringSystemGestures

在iOS 11+中,即使隐藏状态栏,从屏幕的顶部滑动时,通知中心也始终会下拉。 preferredScreenEdgesDeferringSystemGestures允许您指定滑动屏幕边缘不应触发标准系统用户界面,而是提供一个拉出选项卡,用户必须再次滑动该选项卡才能带出系统用户界面。

此功能适用于用户频繁滑动的游戏,不希望引入系统UI而不是控制游戏。对于像这样的身临其境的应用程序,您可以返回.all来指定您不希望任何系统UI在您第一次滑动屏幕的任何边缘时都出现,而应该使用应用程序自己的手势。

请注意,这将禁用从底部滑动一次以关闭没有主页按钮的iPhone和iPad上的应用程序的功能-用户将不得不滑动两次以关闭该应用程序。

仍然无法完全禁用应用程序中的Notification Center,也无法阻止在应用程序处于前台时显示通知。

答案 3 :(得分:-23)

我构建了一个非常简单的代码片段,以编程方式解决此问题。我的应用程序委托中有一个计时器设置,每次运行时每0.2秒运行一次,它会保持状态栏的方向移动,因此不会影响游戏。我从未在我的应用程序中体验过烦人的通知中心!唯一的问题是音量控制不断旋转,可能很烦人,但它不如通知中心那么烦人

int tick=0;

-(void)toggleNC
{
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    tick++;
    if (tick==1)
    {
     [[UIApplication sharedApplication]   setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];
    }
    if (tick==2){
         [[UIApplication sharedApplication]     setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
    }
    if (tick==3){
      [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
   }
    if (tick==4){
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown];
        tick=0;

    }
}