web-dev-qa-db-ja.com

アプリ内のiOS通知センターを無効にするにはどうすればよいですか?

フルスクリーンのiOSアプリがあり、通知センターがプルダウンされないようにしたい場合は、どうすればよいですか?

また、アプリの読み込み中に通知アラートやバナーが表示されないようにブロックできますか? (これは確かな方法ではないと思いますが、念のためお聞きしたいと思います。)

26
Rodney S. Foley

全画面アプリ(statusBarHidden = YES)デフォルトでは通知センターの動作が少し異なります。以前にステータスバーで占められていた領域を下にスワイプすると、小さなタブのみが表示されます。タブをスワイプするだけで通知センターが表示されます。これは、これまで私が誤って起動してしまうのを防ぐのに十分です。

現在、通知センターの動作を操作するためのパブリックAPIはありません。アプリがeverで通知の外観をブロックできる可能性は低く、アプリが通知センターの表示を阻止できる可能性は少し低いと思います。 iOSは、開発者の自由を犠牲にして一貫したユーザーエクスペリエンスを提供することを目的としています。思いがけないユーザーだったら、この種の機能にいらいらしているのが見えた。

そうは言っても、文書化されていないAPIには常にダークサイドがあります。ジェイルブレイクされたデバイスでそれらを使用していくつかの賢さを引き出すことができても、私は驚かないでしょうが、それは私のカップオティーではありません。

20
Matt Wilding

私は今これを理解しました。横向きで実行するゲームを開発しています。左側をタッチすると通知センターのタブが表示されます。これを修正するには、以下を追加します。

setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft

SetStatusBarHiddenの直後にこれを追加し、通知タブの問題がなくなりました。

お役に立てば幸いです。

6
Ben Johnson

APIはiOS 11で導入され、通知センター(およびコントロールセンター)の表示方法の動作が変更され、目的の動作を指定できるようになりました。

UIViewController.preferredScreenEdgesDeferringSystemGestures

IOS 11以降では、ステータスバーが非表示になっている場合でも、画面の最上部からスワイプすると、通知センターは常にプルダウンされます。 preferredScreenEdgesDeferringSystemGesturesを使用すると、画面のEdgeをスワイプしても標準のシステムUIがトリガーされないように指定できます。代わりに、ユーザーがシステムUIを表示するためにもう一度スワイプする必要があるプルアウトタブが提供されます。

これは、ユーザーが頻繁にスワイプするゲームで、ゲームを制御する代わりにシステムUIを導入することが望ましくない場合に使用することを目的としています。そのような没入型アプリの場合、.allは、画面の端を初めてスワイプしたときにシステムUIが表示されないように指定します。代わりに、アプリ独自のジェスチャーを優先する必要があります。

これにより、ホームボタンのないiPhoneおよびiPadでアプリを閉じるために下から1回スワイプする機能が無効になります。ユーザーがアプリを閉じるには、2回スワイプする必要があります。

アプリ内から通知センターを完全に無効にする方法も、アプリがフォアグラウンドにあるときに通知が表示されないようにする方法もありません。

3
Jordan H