musickit は何をしますか?
Apple Musicの再生、カタログ検索、再生中メタデータをMusicKitおよびMediaPlayerを使用して統合します。iOSアプリに音楽検索、Apple Musicサブスクリプションフロー、キュー管理、再生制御、リモートコマンド処理、または再生中情報を追加する際に使用します。
機能
- Apple Musicカタログ検索: 楽曲、アルバム、アーティスト、プレイリストを検索します。
- 再生制御:
MPMusicPlayerControllerを使用した、再生、一時停止、スキップ、シーク操作。 - キュー管理: 曲の追加、削除、並び替え(アプリケーションキューおよびミュージックアプリキュー)。
- サブスクリプション状態: ユーザーが有効なApple Musicサブスクリプションを持っているかどうかを
SKCloudServiceControllerで確認。 - Now Playing情報:
MPNowPlayingInfoCenterからの再生中メタデータ(アーティスト、タイトル、アルバムアートワーク、経過時間)。 - リモートコマンド:
MPRemoteCommandCenterを介した、イヤホンやコントロールセンターからのリモート制御イベントの処理。
設定
- Xcodeプロジェクトに MusicKit と MediaPlayer フレームワークを追加します。
Info.plistにNSAppleMusicUsageDescriptionキーを追加し、Apple Musicへのアクセス理由を説明します。- アプリの Capabilities タブで「MusicKit」機能を有効にします。
- Apple Developer Portalで MusicKit サービスを使用するようにアプリIDを設定します。
使用例
Apple Musicカタログの検索
import MusicKit
let request = MusicCatalogSearchRequest(term: "Billie Eilish", types: [.songs, .albums])
let response = try await request.response()
for song in response.songs {
print("\(song.title) - \(song.artistName)")
}
再生制御
import MediaPlayer
let player = MPMusicPlayerController.applicationMusicPlayer
player.setQueue(with: ["song-store-id-1", "song-store-id-2"])
player.play()
Now Playing情報の取得
let nowPlayingInfoCenter = MPNowPlayingInfoCenter.default()
if let nowPlayingInfo = nowPlayingInfoCenter.nowPlayingInfo {
let title = nowPlayingInfo[MPMediaItemPropertyTitle] as? String
let artist = nowPlayingInfo[MPMediaItemPropertyArtist] as? String
print("再生中: \(title ?? "不明") - \(artist ?? "不明")")
}
Apple Musicサブスクリプション状態の確認
import StoreKit
let controller = SKCloudServiceController()
let capabilities = try await controller.requestCapabilities()
if capabilities.contains(.musicCatalogSubscriptionEligible) {
print("ユーザーはApple Musicサブスクリプションを持っています")
} else {
print("ユーザーはApple Musicサブスクリプションを持っていません")
}
サポート対象のプラットフォーム
- Claude Code
- Cline (VS Code拡張機能)
- Cursor
- Windsurf