LNPermissionHelper.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // LNPermissionHelper.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2026/03/08.
  6. //
  7. import Foundation
  8. import Photos
  9. import AVFoundation
  10. import AVFAudio
  11. import UserNotifications
  12. struct LNPermissionHelper {
  13. static func requestPhotoLibraryAuthorization(_ completion: @escaping (PHAuthorizationStatus) -> Void) {
  14. PHPhotoLibrary.requestAuthorization { status in
  15. runOnMain {
  16. completion(status)
  17. }
  18. }
  19. }
  20. static func cameraAuthorizationStatus() -> AVAuthorizationStatus {
  21. AVCaptureDevice.authorizationStatus(for: .video)
  22. }
  23. static func requestCameraAccess(_ completion: @escaping (Bool) -> Void) {
  24. AVCaptureDevice.requestAccess(for: .video) { granted in
  25. runOnMain {
  26. completion(granted)
  27. }
  28. }
  29. }
  30. static func microphonePermission() -> AVAudioSession.RecordPermission {
  31. AVAudioSession.sharedInstance().recordPermission
  32. }
  33. static func requestMicrophoneAccess(_ completion: @escaping (Bool) -> Void) {
  34. AVAudioSession.sharedInstance().requestRecordPermission { granted in
  35. runOnMain {
  36. completion(granted)
  37. }
  38. }
  39. }
  40. static func requestNotificationAuthorization(options: UNAuthorizationOptions,
  41. completion: @escaping (Bool, Error?) -> Void) {
  42. UNUserNotificationCenter.current().requestAuthorization(options: options) { granted, error in
  43. runOnMain {
  44. completion(granted, error)
  45. }
  46. }
  47. }
  48. static func fetchNotificationSettings(_ completion: @escaping (UNNotificationSettings) -> Void) {
  49. UNUserNotificationCenter.current().getNotificationSettings { settings in
  50. runOnMain {
  51. completion(settings)
  52. }
  53. }
  54. }
  55. }