2016-10-21 9 views
2

iOSで画面のオン/オフを確認するにはどうすればよいですか?私は画面が現在オンであるかどうか、私のアプリがバックグラウンドであるかどうかを知りたい。私はこれにイベントリスナーを持っていたいと思います。ありがとう。iOS:デバイス画面のオン/オフを検出できますか?

+0

?それをしてもいいですか? (スクリーンをオンにする代わりに) – user6539552

答えて

0

iosで画面の状態を取得するためにこのコードを試すことができます。

スウィフトあなたが行うことができます3
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center 
           NULL, // observer 
           displayStatusChanged, // callback 
           CFSTR("com.apple.iokit.hid.displayStatus"), // event name 
           NULL, // object 
           CFNotificationSuspensionBehaviorDeliverImmediately); 
+0

ごめんなさい、私はこのコード部分をよく理解していません。もっと説明しますか?私はこれに新しいです。私はこれを迅速に書きます。アドバイスはありますか? – user6539552

+0

私は "CFSTR"とCFNotificationSuspensionBehaviorDeliverImmediatelyにエラーが発生したコードも試しました – user6539552

2

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Observer UIApplicationDidBecomeActive,UIApplicationDidEnterBackground 
     NotificationCenter.default.addObserver(
       self, 
       selector: #selector(MyViewController.applicationDidBecomeActive(notification:)), 
       name: NSNotification.Name.UIApplicationDidBecomeActive, 
       object: nil) 

     NotificationCenter.default.addObserver(
       self, 
       selector: #selector(MyViewController.applicationDidEnterBackground(notification:)), 
       name:NSNotification.Name.UIApplicationDidEnterBackground, 
       object: nil) 
} 

func applicationDidBecomeActive(notification: NSNotification) { 
    // here my app did become active 
} 
func applicationDidEnterBackground(notification: NSNotification) { 
    // here my app did enter background 
} 

あなたはofficial guideで詳細を見つけることができます。実際のソースから


詳細:私は画面ロックを検出した場合/代わりにイベントのロックを解除何

extension NSNotification.Name { 
    // These notifications are sent out after the equivalent delegate message is called 
    @available(iOS 4.0, *) 
    public static let UIApplicationDidEnterBackground: NSNotification.Name 
    @available(iOS 4.0, *) 
    public static let UIApplicationWillEnterForeground: NSNotification.Name 
    public static let UIApplicationDidFinishLaunching: NSNotification.Name 
    public static let UIApplicationDidBecomeActive: NSNotification.Name 
    public static let UIApplicationWillResignActive: NSNotification.Name 
    public static let UIApplicationDidReceiveMemoryWarning: NSNotification.Name 
    public static let UIApplicationWillTerminate: NSNotification.Name 
    public static let UIApplicationSignificantTimeChange: NSNotification.Name 
    public static let UIApplicationWillChangeStatusBarOrientation: NSNotification.Name // userInfo contains NSNumber with new orientation 
    public static let UIApplicationDidChangeStatusBarOrientation: NSNotification.Name // userInfo contains NSNumber with old orientation 
    // userInfo dictionary key for status bar orientation 
    public static let UIApplicationWillChangeStatusBarFrame: NSNotification.Name // userInfo contains NSValue with new frame 
    public static let UIApplicationDidChangeStatusBarFrame: NSNotification.Name // userInfo contains NSValue with old frame 
    // userInfo dictionary key for status bar frame 
    @available(iOS 7.0, *) 
    public static let UIApplicationBackgroundRefreshStatusDidChange: NSNotification.Name 
    @available(iOS 4.0, *) 
    public static let UIApplicationProtectedDataWillBecomeUnavailable: NSNotification.Name 
    @available(iOS 4.0, *) 
    public static let UIApplicationProtectedDataDidBecomeAvailable: NSNotification.Name 
    // Key in options dict passed to application:[will | did]FinishLaunchingWithOptions and info for UIApplicationDidFinishLaunchingNotification  
    // This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons) 
    @available(iOS 7.0, *) 
    public static let UIApplicationUserDidTakeScreenshot: NSNotification.Name 
} 
+0

ありがとうございます。これは私のアプリの状態をチェックすることしかできないようだ。私がする必要があるのは、オンまたはオフになっている画面の状態を確認することです – user6539552

+0

これに関するアドバイスはありますか? – user6539552

+0

あなたが望むことをするためのパブリックAPIはありません:警告、あなたがいくつかのプライベートAPIを使用する場合、あなたのアプリはAppleのレビューでは有効ではないと判断される可能性があります。公式APIガイドラインを使用する必要があります –

関連する問題