No Description

HardwareAuthorization.swift 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. //
  2. // HardwareAuthorization.swift
  3. // Function
  4. //
  5. // Created by FFIB on 2016/11/21.
  6. // Copyright © 2016年 FFIB. All rights reserved.
  7. //
  8. import UIKit
  9. import CoreLocation
  10. import Contacts
  11. import AddressBook
  12. import EventKit
  13. import AssetsLibrary
  14. import Photos
  15. import CoreBluetooth
  16. public class HardwareAuthorization: NSObject {
  17. class func isAuthorizationLocation() -> Bool {
  18. let status = CLLocationManager.authorizationStatus()
  19. switch status {
  20. case .notDetermined:
  21. return true
  22. case .denied :
  23. return false
  24. case .restricted :
  25. return false
  26. default:
  27. break
  28. }
  29. return true
  30. }
  31. class func isAuthorizationAddress() -> Bool {
  32. if #available(iOS 9.0, *) {
  33. let status = CNContactStore.authorizationStatus(for: .contacts)
  34. switch status {
  35. case .notDetermined:
  36. return true
  37. case .denied :
  38. return false
  39. case .restricted :
  40. return false
  41. default:
  42. break
  43. }
  44. } else {
  45. let status = ABAddressBookGetAuthorizationStatus()
  46. switch status {
  47. case .notDetermined:
  48. return true
  49. case .denied :
  50. return false
  51. case .restricted :
  52. return false
  53. default:
  54. break
  55. }
  56. }
  57. return true
  58. }
  59. class func isAuthorizationReminders() -> Bool {
  60. return isAuthorizationEvent(entityType: .reminder)
  61. }
  62. class func isAuthorizationCalender() -> Bool {
  63. return isAuthorizationEvent(entityType: .event)
  64. }
  65. class func isAuthorizationEvent(entityType: EKEntityType) -> Bool {
  66. let status = EKEventStore.authorizationStatus(for: entityType)
  67. switch status {
  68. case .notDetermined:
  69. return true
  70. case .denied :
  71. return false
  72. case .restricted :
  73. return false
  74. default:
  75. break
  76. }
  77. return true
  78. }
  79. class func isAuthorizationPhotoAlbum() -> Bool {
  80. if #available(iOS 9.0, *) {
  81. let status = PHPhotoLibrary.authorizationStatus()
  82. switch status {
  83. case .notDetermined:
  84. return true
  85. case .denied :
  86. return false
  87. case .restricted :
  88. return false
  89. default:
  90. break
  91. }
  92. } else {
  93. let status = ALAssetsLibrary.authorizationStatus()
  94. switch status {
  95. case .notDetermined:
  96. return true
  97. case .denied :
  98. return false
  99. case .restricted :
  100. return false
  101. default:
  102. break
  103. }
  104. }
  105. return true
  106. }
  107. class func isAuthorizationBluetooth() -> Bool {
  108. let status = CBPeripheralManager.authorizationStatus()
  109. switch status {
  110. case .notDetermined:
  111. return true
  112. case .denied :
  113. return false
  114. case .restricted :
  115. return false
  116. default:
  117. break
  118. }
  119. return true
  120. }
  121. class func isAuthroizationCamera() -> Bool {
  122. let status = AVCaptureDevice.authorizationStatus(for: .video)
  123. switch status {
  124. case .notDetermined:
  125. return true
  126. case .denied :
  127. return false
  128. case .restricted :
  129. return false
  130. default:
  131. break
  132. }
  133. return true
  134. }
  135. class func isAuthroizationMicrophone() -> Bool {
  136. let status = AVAudioSession.sharedInstance().recordPermission.rawValue
  137. switch status {
  138. case 1:
  139. return true
  140. case 2:
  141. return false
  142. default:
  143. return true
  144. }
  145. }
  146. }