ハイライト
Apple Music API と MusicKit を使用すると、開発者は、カタログ検索、コンテンツ検出、再生制御、購読者向けのパーソナライズされた推奨事項など、Apple Music の機能を iOS、Web、Android プラットフォーム全体で統合できます。
主要内容
1 つの API、3 つのプラットフォーム
以前は、音楽ストリーミングをアプリに統合したい場合は、独自の音楽ライブラリを構築し、著作権を処理し、CDN を設定する必要がありました。これは中小規模の開発者にとってはほぼ不可能です。
Apple Music API は、Apple Music の完全なカタログへの直接アクセスを提供する RESTful JSON インターフェイスを提供します。 MusicKit クライアント フレームワークを使用すると、開発者は iOS、Web、Android 全体で一貫した音楽エクスペリエンスを実現できます。
(00:51)
各プラットフォームにおける MusicKit の役割分担:
- Apple プラットフォーム: MusicKit は認証、再生制御、API 呼び出しを処理するため、開発者が基盤となるネットワーク リクエストを直接操作する必要はほとんどありません。
- Web: JavaScript SDK および組み込みコンポーネント (フル機能のメディア プレーヤーを含む) を提供します。
- Android: 加入者認証、再生制御、完全な API アクセスをサポートする SDK を提供します。
アクセスを取得する
Apple Music API を呼び出すには開発者トークンが必要です。プラットフォームが異なれば、アクセス方法も異なります。
(03:42)
Apple プラットフォーム: Apple Developer Portal の App ID で MusicKit サービスを有効にすると、システムが自動的にトークンを管理します。
その他のプラットフォーム: Apple Developer Portal で MusicKit 開発者として登録し、秘密キーをダウンロードして、JWT (JSON Web Token) を生成します。
JWT には次のフィールドが必要です。
- Header:
algES256でなければなりません、kidは秘密鍵の識別子です - Claims:
iss(Team ID)、iat(発行時間)、exp(有効期限は最長6ヶ月) - Webアプリケーションの提案プラス
originトークンが指定されたドメイン名でのみ使用されるように制限するクレーム
リソースをリクエストする
Apple Music API の URL は RESTful 構造を使用します。
https://api.music.apple.com/v1/catalog/{storefront}/{resource-type}/{id}
(05:36)
v1下位互換性を維持する API バージョンです{storefront}は、次のような 2 文字の国コードです。us、cn{resource-type}のようにplaylists、albums、songs{id}リソースの一意の識別子です
オプションのパラメータ:
l:言語タグなどen-US、es-MXextend: 拡張属性を要求しますinclude: 関連するリソースの完全なメタデータが含まれます
詳細
プレイリストを取得する
curl "https://api.music.apple.com/v1/catalog/us/playlists/pl.u-55D6ZEMId7y" \
-H "Authorization: Bearer YOUR_DEVELOPER_TOKEN"
応答構造:
{
"data": [
{
"id": "pl.u-55D6ZEMId7y",
"type": "playlists",
"href": "/v1/catalog/us/playlists/pl.u-55D6ZEMId7y",
"attributes": {
"name": "Today's Hits",
"curatorName": "Apple Music",
"description": {
"standard": "The biggest songs right now."
},
"artwork": {
"width": 1200,
"height": 1200,
"url": "https://example.mzstatic.com/image/{w}x{h}bb.jpg"
},
"playParams": {
"id": "pl.u-55D6ZEMId7y",
"kind": "playlist"
}
},
"relationships": {
"curator": {
"href": "/v1/catalog/us/playlists/pl.u-55D6ZEMId7y/curator",
"data": [{ "id": "123456789", "type": "apple-curators" }]
},
"tracks": {
"href": "/v1/catalog/us/playlists/pl.u-55D6ZEMId7y/tracks",
"data": [
{
"id": "1234567890",
"type": "songs",
"attributes": {
"name": "Song Title",
"artistName": "Artist Name",
"durationInMillis": 234000
}
}
]
}
}
}
]
}
キーポイント:
data要求されたリソースを含む配列attributesメタデータの保存 (名前、説明、アートワーク)playParams購読者がコンテンツを再生できるかどうかを示しますrelationships関連リソース(キュレーター、トラック)が含まれていますartwork.urlで{w}そして{h}実際の解像度に置き換える必要があります
アートワークをロードする
// 替换 artwork URL 中的尺寸占位符
let width = 400
let height = 400
let artworkURL = artwork.url
.replacingOccurrences(of: "{w}", with: "\(width)")
.replacingOccurrences(of: "{h}", with: "\(height)")
キーポイント:
- アートワークの URL に含まれるもの
{w}そして{h}プレースホルダー - 必要な解像度に置き換えて、対応するサイズの画像を取得します
- 小さいサイズの画像はファイル サイズが小さくなり、読み込みが速くなります
ページネーション処理
プレイリストのトラック関係は、デフォルトでは上位 100 トラックのみを返します。 100 曲を超える場合、応答には次のものが含まれます。nextフィールド:
{
"relationships": {
"tracks": {
"href": "/v1/catalog/us/playlists/pl.xxx/tracks",
"data": [...],
"next": "/v1/catalog/us/playlists/pl.xxx/tracks?offset=100"
}
}
}
キーポイント:
- 合格
nextURL 次のページを取得 - 追加可能
limit各ページのサイズをカスタマイズするパラメータ - 常に使用してください
nextURL、オフセットを自分で計算しないでください - データがなくなったら、
nextフィールドが存在しません
ディレクトリの検索
curl "https://api.music.apple.com/v1/catalog/us/search?term=pop&types=albums,songs&limit=10" \
-H "Authorization: Bearer YOUR_DEVELOPER_TOKEN"
応答には以下が含まれますresultsオブジェクト、各リクエスト タイプは結果グループに対応します。
{
"results": {
"albums": {
"href": "/v1/catalog/us/search?term=pop&types=albums",
"data": [...],
"next": "/v1/catalog/us/search?term=pop&types=albums&offset=10"
},
"songs": {
"href": "/v1/catalog/us/search?term=pop&types=songs",
"data": [...]
}
},
"meta": {
"results": {
"order": ["albums", "songs"]
}
}
}
キーポイント:
typesパラメータにより検索されるコンテンツ タイプが制限されますlimitタイプごとの返品数を制御するmeta.results.order関連性に基づいた推奨ランキングを提供します- 各結果グループには独自の結果グループがあります
nextページネーションリンク
パーソナライゼーション機能にアクセスする
加入者は、音楽ユーザー トークンを介してパーソナライズされたデータにアクセスできます。
curl "https://api.music.apple.com/v1/me/library/albums" \
-H "Authorization: Bearer YOUR_DEVELOPER_TOKEN" \
-H "Music-User-Token: USER_TOKEN"
キーポイント:
- Music User TokenはMusicKitの認証プロセスを通じて取得されます
- 音楽データにアクセスするには明示的なユーザー認証が必要です
- トークンはデバイスとアプリにバインドされており、デバイス間で共有することはできません
- サブスクリプションの変更、パスワードの変更、または権限の取り消しにより、トークンが無効になる可能性があります
重要ポイント
クロスプラットフォームの音楽発見アプリを作成する
- 内容: Apple Music カタログとソーシャル レコメンデーションを組み合わせて、ユーザーが新しい音楽を発見できるようにする Web アプリ
- 実行する価値がある理由: Apple Music API は完全なカタログ データと検索機能を提供するため、開発者は検出アルゴリズムと UI だけに集中する必要があります。
- 開始方法: JavaScript MusicKit SDKで初期化して呼び出します
/v1/catalog/{storefront}/searchで検索playParamsコンテンツが再生可能かどうかを判断する
音楽トリビア ゲームを作成します
- 内容: ユーザーが曲のスニペットを再生して曲のタイトル、アーティスト、またはアルバムを推測できるトリビア ゲーム
- 実行する価値がある理由: Apple Music API はアートワーク、曲のメタデータ、プレビュー クリップを提供し、ゲーム コンテンツは自然に充実しています
- 開始方法: 検索 API を使用して曲を取得し、アートワークとアーティスト名をタイトル素材として抽出し、MusicKit プレーヤーを統合してプレビューを再生します
スマート プレイリスト ジェネレーターを作成する
- 内容: ユーザーの気分、アクティビティ、または天気に基づいて Apple Music プレイリストを自動的に生成します
- 実行する価値がある理由: Apple Music のカタログ データとユーザーのライブラリ データを組み合わせて、高度にパーソナライズされたリストを生成できます
- 開始方法: 電話
/v1/me/recommendations推奨事項を取得して組み合わせる/v1/catalog/{storefront}/searchキーワードで曲を追加するには、次を使用します。/v1/me/library/playlistsプレイリストの作成
音楽学習補助具を作成
- 機能: 歌詞、コード、曲の構造を表示し、音楽学生のレパートリー学習を支援します。
- 実行する価値がある理由: Apple Music API は、学習コンテンツと正確に一致する正確な曲の長さとアーティスト情報を提供します。
- 開始方法: 検索 API を使用して曲を見つけて取得します。
durationInMillis段落の位置を計算し、プレーヤーを統合して同期スクロールを実現します
関連セッション
- MusicKit でさらにコンテンツを探索 — MusicKit の機能とベスト プラクティスについて詳しく学びます
- MusicKit for Swift について — Swift で MusicKit を使用するための初心者ガイド
- Apple Music API によるコンテンツの相互参照 — さまざまなストアフロント間でコンテンツの関連付けを処理する方法を学びます
コメント
GitHub Issues · utterances