Swift MusicKitプログラミング その3
MusicKitプログラミング その3
認証
https://developer.apple.com/documentation/musickit
このURLのページのImportant以降を先ずやらなければいけません。
- Info.plistファイルにNSAppleMusicUsageDescriptionキーを追加、ユーザーのメディアをどのように使用するかの説明。
- MusicAuthorizationを使用して、アプリがMusicKitを使用するための許可を要求。
Xcode上に、Info.plistファイルがない!!という場合。
- プロジェクトファイルを選択。
- TARGETSのアプリを選択。
- InfoのCustom iOS Target PropertiesでNSAppleMusicUsageDescriptionを追加して下さい。
NSAppleMusicUsageDescriptionは「Privacy – Media Library Usage Description」の事です。
全体像と認証状態によるアクション
認証状態
authorized:認証済み、MusicKitでやりたい事をやる。
denied:拒否中、設定画面に誘いONにして貰う。
notDetermined:未決定、認証依頼。
restricted:何もするな!by ドキュメントより。
Example Code
import SwiftUI import MusicKit @main struct ExampleStudyMusicKitApp: App { @UIApplicationDelegateAdaptor private var appDelegate: AppDelegate var body: some Scene { WindowGroup { ContentView() .environmentObject(Music()) } } } class AppDelegate: NSObject, UIApplicationDelegate { /// Opens a URL using the appropriate system service. @Environment(\.openURL) private var openURL var status = MusicAuthorization.Status.notDetermined func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. self.status = MusicAuthorization.currentStatus print("MusicAuthorization.Status:\(status)") switch status { case .notDetermined: Task { let status = await MusicAuthorization.request() self.status = status } case .denied: if let settingsURL = URL(string: UIApplication.openSettingsURLString) { openURL(settingsURL) } case .restricted: print("No request!!") case .authorized: print("Authorized!!") @unknown default: print("Future status!!") } print("MusicAuthorization.Status:\(self.status)") return true } }