5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SwiftでApple Music APIを使用した際の備忘録

Posted at

Apple Music APIを使用して、アーティストやアルバムの検索を行うコードを実装してみました。下記の記事を参考に実装しましたが、つまづいた点がいくつかあったので、備忘録としてこの記事を書きました。

目次

  • 環境
  • Developer Tokenの準備でつまづいたポイント①Big Sur環境でのpyenv install
  • Developer Tokenの準備でつまづいたポイント②music_token.pyの実行
  • Apple Music APIへのアクセスの実装
  • まとめ

環境

  • macOS Big Sur11.4
  • Xcode12.5.1
  • iOS14.5

Developer Tokenの準備でつまづいたポイント①Big Sur環境でのpyenv install

Apple Music APIにアクセスする為には、Developer Tokenと呼ばれるトークンを発行する必要があります。今回は上記の記事にある通り、apple-music-token-generatorを使ってトークンを発行してみました。(詳細な手順は上記の記事をご覧ください。)

事前準備としてpipのインストールが必要でしたが、自分の端末はPythonのバージョンが低かった為(2.7.16でした)、python get-pip.pyが実行できず、Pythonのバージョンを3系に上げる必要がありました。

そこでこちらの記事を参考に試してみましたが、pyenv installのところでエラーになってしまい、3系のPythonのインストールが出来ませんでした。

調べてみたところ、Big Surではpyenv installが上手く動作しない事がある様でした。
解決策として下記の記事が非常に参考になりました。

ちなみに、インストールが無事完了した後のPythonの切り替えはこちらを参考にしました。

Developer Tokenの準備でつまづいたポイント②music_token.pyの実行

こちらはちょっとした事ですが、music_token.pyを実行すると「print文の括弧がないよ!」的なエラーになるので、下記の通り修正してから実行しました。

これを

print "----TOKEN----"
print token

こんな感じにして実行しました。(もしかしたら修正せずに実行する方法があるのかも知れませんが、私は分かりませんでした...。)

print("----TOKEN----")
print(token)

Apple Music APIへのアクセスの実装

実際のコードはこんな感じです。書き方はこちらの記事が非常に参考になりました。

import UIKit
import Alamofire
import SwiftyJSON

class AppleMusicManager {
    let header: HTTPHeaders = [
        "Authorization" : "Bearer {ここにDeveloper Tokenを入れる}"
    ]
    let baseUrl = "https://api.music.apple.com/v1/catalog/jp/search" 
    let parameters = ["term": "bump", "limit": "10", "types": "albums"] // 今回は"bump"で検索したが、検索ワードは任意のものを設定する
    
    func searchAlbum() {
        AF.request(self.baseUrl, method: .get, parameters: self.parameters, encoding: URLEncoding.default, headers: header)
            .responseJSON { responce in
                switch responce.result {
                case .success:
                    if let object = responce.value {
                        let json = JSON(object)
                        print("成功したよ: \(json)")
                    }
                case .failure(let error):
                    print("エラーだよ\(error)")
            }
        }
    }
}

何度かエラーになりましたが、

  • Developer Tokenの前に半角スペースを入れる。
  • Alamofireを使用する際は、Alamofire.request(...)と記載している記事が多かったが、自分の場合はメソッドが上手く見つからず、 AF.request(...)という書き方にしたら上手くいった。(参考:Module 'Alamofire' has no member named 'request'
    )

等を試してみたら正常にレスポンスが返却される様になりました。

まとめ

Apple Music APIをいざ実装してみると、思っていたよりも調べることが沢山ありました。
この記事が少しでもApple Music APIを実装してみたいと思っている方の手助けになれば幸いです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?