使用RubyMotion搜索Apple Music(第2部分)
在第1部分中,我们添加了通过Apple Music播放歌曲的功能(希望您喜欢它!),但是曲目ID是硬编码的。 在本期中,我们将创建一个搜索界面,让您搜索自己要播放的音乐。
我们将从为搜索界面添加新的视图控制器开始。 使用此代码创建一个新文件search_controller.rb 。
类SearchController < UITableViewController
def viewDidLoad
超
自我 .title = '搜索'
结束
结束
我们将从PlayerController创建SearchController的实例,然后在导航栏中添加一个按钮。 我们现在可以摆脱硬编码的曲目ID,因为我们将找到自己的曲目以尽快播放。
def viewDidLoad
超
@player = 玩家 。 新
@search_controller = SearchController 。 新
自我 .title = 'MusicApp'
自我 .view.backgroundColor = UIColor .whiteColor
自我 。 addSubview create_play_button
自我 .navigationItem.rightBarButtonItem = create_search_button
结束
def create_search_button
@search_button = BW :: UIBarButtonItem 。 new ( system ::search ) 做
自我 .navigationController。 pushViewController ( @search_controller , 动画 : true )
结束
结束
当用户点击搜索按钮时,我们的搜索控制器将被推到导航控制器的堆栈上。
现在在模拟器中尝试…
耙模拟器
…然后点击搜索按钮。
我们需要将SearchController绑定到Apple Music API上,以找到一些不错的音乐。 Apple Music API是MusicKit的Web服务部分,但是在使用它之前,还有很多工作要做。 要使用Music API进行任何操作,您都需要开发者令牌。 这是你的制作方法。
开发者令牌
首先,您需要一个Music ID和Music Key 。 您可以从Apple Developer网站的“证书,标识符和配置文件”页面获得它们。
创建音乐ID 。
创建并下载MusicKit私钥。 稍后您将需要密钥ID,因此请将其复制到某个地方。
现在,您终于可以创建一个开发人员令牌。 我不会为您提供所有详细信息,但是可以说这是一个JWT令牌,有效期为一个月。
创建JWT令牌的代码来自StackOverflow用户coreyward 。 您将需要两个gem来运行它。
gem install jwt
宝石安装openssl
这是创建令牌的代码。 输入您在先前步骤中创建的详细信息,然后在IRB中运行代码。
需要 'jwt'
需要 'openssl'
AppleMusic模块
类令牌
attr_reader :key_id , :team_id , :keyfile
def 初始化 ( key_id , team_id , keyfile )
@key_id = key_id
@team_id = team_id
@keyfile = 密钥文件
结束
def auth_token
@auth_token || = fetch_auth_token
结束
def auth_header
“承载者 #{auth_token} ”
结束
受保护的
def fetch_auth_token
现在 = 时间 .now.to_i
一个月 = 3600 * 24 * 30
过期 = 现在 + 一个月
标头 = {
typ : “ JWT” , #必须指定; 不在文档中
alg : “ ES256” ,
小子 :key_id
}
身体 = {
iss :team_id,
雅特 : 现在 ,
exp : 到期
}
JWT .encode( body ,auth_key, 'ES256' , header )
结束
def auth_key
密钥 = OpenSSL :: PKey :: EC 。 新增 (keyfile.read)
键 .check_key
键
结束
结束
结束
team_id = '您的团队ID'
#在 https://developer.apple.com/membercenter/index.action上 找到它 #accountSummary
music_private_key = '您的音乐私钥'
#在 https://developer.apple.com/account/ios/authkey /中 找到它
key_file = 'path_to_key_file.p8'
#您先前下载的文件
令牌 = AppleMusic :: 令牌 。 新的music_private_key , team_id , File .open( key_file )
放置令牌 .auth_token
将生成的令牌复制到安全的地方。 您很快就会需要它。
您无需将此代码添加到您的应用中; 我将其放在脚本文件夹中,以便当令牌在一个月后过期时可以重新运行它。 在真实的应用程序中,您可能希望在服务器上生成令牌,并让您的应用程序定期获取新令牌。
Apple文档中提供了有关开发人员令牌的更多信息。
搜索音乐
现在,我们可以使用开发人员令牌通过Apple Music API进行搜索。 有关搜索API的Apple文档在这里。 有很多搜索选项,但我们只是在寻找要播放的歌曲。
要使用API,我们将向我们的Gemfile添加一个新的gem,以使其更容易执行HTTP请求…
来源 'https://rubygems.org'
宝石 “耙子”
宝石 “气泡包装”
宝石 “情感”
…和…
bundle install#安装gem
rake pod:install#安装gem依赖的iOS库
…现在我们可以使用afmotion来获取一些曲目。
有多种使用afmotion的方法,但是我发现最简单的方法是在初始化中构建AFMotion :: Client ,然后为每个请求调整URL。