EMCDDeviceManagerBase.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /************************************************************
  2. * * Hyphenate CONFIDENTIAL
  3. * __________________
  4. * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
  5. *
  6. * NOTICE: All information contained herein is, and remains
  7. * the property of Hyphenate Inc.
  8. * Dissemination of this information or reproduction of this material
  9. * is strictly forbidden unless prior written permission is obtained
  10. * from Hyphenate Inc.
  11. */
  12. #import <UIKit/UIKit.h>
  13. #import "EMCDDeviceManagerBase.h"
  14. #import "EMCDDeviceManager+ProximitySensor.h"
  15. static EMCDDeviceManager *emCDDeviceManager;
  16. @interface EMCDDeviceManager (){
  17. }
  18. @end
  19. @implementation EMCDDeviceManager
  20. +(EMCDDeviceManager *)sharedInstance{
  21. static dispatch_once_t onceToken;
  22. dispatch_once(&onceToken, ^{
  23. emCDDeviceManager = [[EMCDDeviceManager alloc] init];
  24. });
  25. return emCDDeviceManager;
  26. }
  27. -(instancetype)init{
  28. if (self = [super init]) {
  29. [self _setupProximitySensor];
  30. [self registerNotifications];
  31. }
  32. return self;
  33. }
  34. - (void)registerNotifications
  35. {
  36. [self unregisterNotifications];
  37. if (_isSupportProximitySensor) {
  38. static NSString *notif = @"UIDeviceProximityStateDidChangeNotification";
  39. [[NSNotificationCenter defaultCenter] addObserver:self
  40. selector:@selector(sensorStateChanged:)
  41. name:notif
  42. object:nil];
  43. }
  44. }
  45. - (void)unregisterNotifications {
  46. if (_isSupportProximitySensor) {
  47. static NSString *notif = @"UIDeviceProximityStateDidChangeNotification";
  48. [[NSNotificationCenter defaultCenter] removeObserver:self
  49. name:notif
  50. object:nil];
  51. }
  52. }
  53. - (void)_setupProximitySensor
  54. {
  55. UIDevice *device = [UIDevice currentDevice];
  56. [device setProximityMonitoringEnabled:YES];
  57. _isSupportProximitySensor = device.proximityMonitoringEnabled;
  58. if (_isSupportProximitySensor) {
  59. [device setProximityMonitoringEnabled:NO];
  60. } else {
  61. }
  62. }
  63. @end