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
}
}







