如何在APP中接入英文歌曲搜索库(Spotify接入)

Spotify是全球最大的正版流媒体音乐服务平台之一,有非常丰富的流媒体库,最主要的是还提供了非常丰富的API、SDK供个人或企业调用,以便获取最新最全的音乐,而且是不收费的,但你的用户如果想听可就要付费了,所以说“天下没有免费的午餐”啊。

注意:Spotify在中国区还没有提供服务,访问官网会有提示,但访问开发者中心畅通无阻(https://developer.spotify.com/)

进入正题,Spotify如何为我所用呢?下面以iOS接入为例一步步展开【业务很简单:在APP海外版中搜索歌曲并播放】

1、让我们先看看其强大的开发者中心吧:

2、申请spotify,需要VPN,因为spotify在大陆还没有业务。

3、进入开发者中心(https://developer.spotify.com/),创建自己的APP,里面的Redirect URIs、Bundle IDs、Android Packages可以在后续用到的时候随时添加上,这样我们就拿到了Client ID和Client Secret。

4、无论是iOS还是Android平台的sdk,想要播放完整的歌曲都需要付费spotify会员权限,所以我们还需要办理付费会员,官方有3种付费渠道,但我尝试的时候都不行,必须海外的信用卡等等,所以干脆直接去淘宝,淘宝有专门办理spotify付费的,99元人民币三个月。

5、下载iOS版本SDK,里面Demo的代码比较完整,只需要更换一下Client ID就可以使用了,看看里面Config.h中的几个重要参数:

几个重要的参数

kClientId:自己 App的client ID

kCallbackURL:Auth2.0授权的回调地址

kTokenSwapServiceURL:用来新的获取token,需要自己开发服务

kTokenRefreshServiceURL:用来refresh token,以便实现权限自动续期,需要自己开发服务

kSessionUserDefaultsKey:默认不变

kTokenSwapServiceURL和kTokenRefreshServiceURL后面会说明,以及两个服务如何实现。

6、如何实现搜索?有两个选择,一种web api方式,一种集成sdk,APP内部实现,但我们发现Android版的SDK中没有提供seach的接口,只是iOS版的SDK实现了,所以最终决定选择web api形式实现搜索,供两个平台调用。

      下载web api的Demo地址:https://developer.spotify.com/web-api/code-examples/

Demo做的非常完善,测试单元也都有,核心功能实现都已经给出来了,我们只需要找到要用的那部分代码。

搜索部分共有4种类型:歌曲,歌手,歌单,专辑

搜索歌曲代码:

搜索歌曲

搜索歌手代码:

搜索歌手

搜索歌手的top歌曲:

搜索歌手的top歌曲

还有搜索歌单,专辑部分,这儿就不继续延展了,有需要的直接看Demo,都能找到你想要的。

有了主要功能函数,剩下的就是包装成rest服务了,不再赘述。

需要注意的地方是,spotify搜索接口返回的并不是歌曲的音源地址,而是一个id,比如“spotify:track:3Dupb5AcaVFErlSSfl3szW”,iOS&Android的SDK已经提供了播放接口,接口参数就是id,同时接口还会返回preview_url,这个是只有30s的音源地址,可以随便播放。更为详细的格式查询API Console(https://developer.spotify.com/web-api/console/)。

7、歌曲数据有了,试试APP端怎么播放吧。

播放类:SPTAudioStreamingController

player核心类

到这儿你应该能够听到来自spotify的歌曲了。

8、关于授权

    Spotify走的也是OAuth2.0协议,即Web Server Flow。

了解详细:http://developer.baidu.com/wiki/index.php?title=docs/oauth/authorization

Spotify每次授权之后token有效期3600s,过期以后还需要用户输入用户名密码登录授权,比较麻烦,很是影响用户体验,有没有办法解决这个问题?查询发现,OAutch2.0确实是支持自动续期权限的,这个太好了,下一步就看在APP中如何实现了。

iOS版SDK正好也有这方面的兼容,不过需要设置两个回调服务,即开始提到的kTokenSwapServiceURL和kTokenRefreshServiceURL。

官方文档中并没有提到这两个服务实现的细节,但通过搜索也能查到一些蛛丝马迹。

       8.1、启动iOS Demo,登录以后APP会调用kTokenSwapServiceURL服务,带的参数是code,拿到code以后实现:

返回的参数
实现类

    返回的数据格式需要时标准的json。

    8.2、过期以后重新refresh token

      SDK检查当前token是否可用,不可用会调用kTokenRefreshServiceURL
服务,上行的参数是refresh_token,拿到refresh_token以后实现:


返回的数据
实现类

      返回的数据格式需要时标准的json。

总结:以上就是所有部分了,总起来说比较简单,因为官方给的api已经足够清晰了,只是在授权地方可能会有些迷惑的地方,再有任何问题可以在后面追加评论,O(∩_∩)O谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容