How can I detect DND mode within an app?

cocoa-touch, ios, iphone

Solution

There's no public API about Do Not Disturb or even Airplane mode. Not even to know the status.

About Airplane mode, you could check the network status (using Reachability), but it wouldn't be 100% accurate.

Reachability is a code sample from Apple, but there are several libraries based on it on GitHub.

Problem

I'm building a medical diagnostic app. Interruptions while a patient (or doctor) is in the midst of using it would disrupt the purpose of the app and waste a lot of time. I would like to know how I can detect within an app whether Do Not Disturb mode is switched on/off. (It would also be good to know whether Air Plane Mode is on/off.) That way I could remind the user to go into Settings to turn it on. Even better (much more civilized): is there any way I could allow the user to turn on DND mode from within the app? (Rather like the user can normalize the device volume within an app using MPVolumeView.) The closest answer I've yet found directs to this page on turning on Air Plane mode with a special 'URL.' But it only works in iOS 5.

Original source

Related problems