備忘録代わりに書きます。
カメラ、カメラロール、マイク、プッシュ通知の4つです
カメラ
AVFoundation
を使います。
import AVFoundation
let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo)
if status == AVAuthorizationStatus.Authorized {
// アクセス許可あり
} else if status == AVAuthorizationStatus.Restricted {
// ユーザー自身にカメラへのアクセスが許可されていない
} else if status == AVAuthorizationStatus.NotDetermined {
// まだアクセス許可を聞いていない
} else if status == AVAuthorizationStatus.Denied {
// アクセス許可されていない
}
マイク
カメラと一緒です。
AVMediaType
がVideo
かAudio
かの違いになります。
import AVFoundation
let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeAudio)
if status == AVAuthorizationStatus.Authorized {
// アクセス許可あり
} else if status == AVAuthorizationStatus.Restricted {
// ユーザー自身にカメラへのアクセスが許可されていない
} else if status == AVAuthorizationStatus.NotDetermined {
// まだアクセス許可を聞いていない
} else if status == AVAuthorizationStatus.Denied {
// アクセス許可されていない
}
カメラロール
AssetsLibrary
を使います。
import AssetsLibrary
let status = ALAssetsLibrary.authorizationStatus()
if status == ALAuthorizationStatus.Authorized {
// アクセス許可あり
} else if status == ALAuthorizationStatus.Restricted {
// ユーザー自身にカメラへのアクセスが許可されていない
} else if status == ALAuthorizationStatus.NotDetermined {
// まだアクセス許可を聞いていない
} else if status == ALAuthorizationStatus.Denied {
// アクセス許可されていない
}
Push通知
これは iOS7 と iOS8 で対応方法が変わります。
// iOS7の場合
let remoteNotificationType: UIRemoteNotificationType = UIApplication.sharedApplication().enabledRemoteNotificationTypes()
// Noneじゃなかったら許可あり
let isAuthorization = (remoteNotificationType != UIRemoteNotificationType.None)
// iOS8の場合
UIApplication.sharedApplication().isRegisteredForRemoteNotifications()
となります。
ちなみにUIRemoteNotificationType
は以下のような
struct UIRemoteNotificationType : RawOptionSetType { init(_ rawValue: UInt) init(rawValue rawValue: UInt) static var None: UIRemoteNotificationType { get } static var Badge: UIRemoteNotificationType { get } static var Sound: UIRemoteNotificationType { get } static var Alert: UIRemoteNotificationType { get } static var NewsstandContentAvailability: UIRemoteNotificationType { get } }
という構造体になります。
以上です。