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

问题描述 投票:26回答:4

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

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

objective-c notifications ios5
4个回答
20
投票

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

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

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


6
投票

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

setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft

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

希望有所帮助。


1
投票

iOS 11中引入了API,同时显示了通知中心(和控制中心)的行为更改,以允许您指定所需的行为。

UIViewController.preferredScreenEdgesDeferringSystemGestures

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

这旨在用于用户经常滑动的游戏,其中不希望引入系统UI而不是控制游戏。对于像这样的沉浸式应用程序,您可以返回.all以指定您不希望在您第一次滑动屏幕的任何边缘时出现任何系统UI,它应该更喜欢您的应用程序自己的手势。

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

仍然无法从您的应用中完全禁用通知中心,也无法阻止在您的应用处于前台时显示通知。


-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;

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.