大多数Spotify iOS SDK教程都处理Objective C或Swift 2.3或更低版本。 这是逐步指南,用于集成适用于Swift 3.0+的iOS Spotify SDK。
1.创建新的xCode项目。
项目名称中不能包含任何空格,这一点很重要。
2.在此处通过Spotify注册应用
- 在您的应用页面下的“重定向URI”下,创建一个新的重定向URI /(yourAppName):// returnAfterLogin。
- 确保从您的应用中输入您的捆绑ID。 通过单击xCode项目并在“常规”选项卡下查看,获取捆绑包应用ID
- 保存在我的应用程序/设置下生成的客户端ID和客户端密钥
3.在此处下载Spotify SDK框架
- 将三个框架拖到您的项目中。 确保单击复制到目标。
4.创建桥接头
单击新文件,可可触摸类文件,目标C。您可以使用任何名称。
单击创建。 然后将要求您创建一个桥接头。 选择创建桥接头。
它应该创建一个文件名\(yourProjectName)-Bridging-Header.h。
单击此文件,然后粘贴以下内容:
#import
#import
#import
5.与库的双重检查链接二进制文件包括Spotify框架
在项目/构建阶段下,仔细检查是否已添加SpotifyAuthentication,SpotifyAudioPlayback和SpotifyMetadata框架(应该已经自动完成。否则,请添加三个Spotify框架)。
6.创建URL方案
在目标/信息下,创建新的URL类型。
确保添加包标识符和回调URL \(yourAppName)
7.在主情节提要板上,添加一个登录按钮。
8.将以下变量添加到MainViewController
var auth = SPTAuth.defaultInstance()!
var session:SPTSession!
var播放器:SPTAudioStreamingController?
var loginUrl:URL?
9.将以下方法添加到MainViewController
在客户端ID和重定向URL下,放入您的客户端ID和重定向URL(已在步骤2中保存)
10.从“登录”按钮添加插座和操作
@IBActionFunc loginBtnPressed(_发件人:任意){
如果UIApplication.shared.openURL(loginUrl!){
如果auth.canHandle(auth.redirectURL){
//要做-建立错误处理
}
}
}
Spotify SDK生成身份验证URL。 然后,您指定应用程序以打开此URL。
当用户点击此按钮时,它将重定向到用户登录的野生动物园。
11.处理返回网址(在App Delegate中)
现在,单击您的应用程序委托。 添加此变量
var auth = SPTAuth()
将以下内容添加到应用程序didFinishLaunchingWithOptions中:
auth.redirectURL = URL(string:“ \
(您的重定向网址在这里)“)
auth.sessionUserDefaultsKey =“当前会话”
您的应用程序代表现在应该具有以下内容:
现在,您需要在应用程序委托中处理返回URL。 添加以下功能和代码:
// 1
func application(_ application:UIApplication,open url:URL,sourceApplication:String ?,注解:Any)-> Bool {
// 2-检查应用是否可以处理重定向网址
如果auth.canHandle(auth.redirectURL){
// 3-处理闭包中的回调
auth.handleAuthCallback(withTriggeredAuthURL:url,回调:{(错误,会话)在
// 4-句柄错误
如果错误!= nil {
打印(“错误!”)
}
// 5-将会话添加到用户默认设置
让userDefaults = UserDefaults.standard
让sessionData = NSKeyedArchiver.archivedData(withRootObject:会话)
userDefaults.set(sessionData,forKey:“ SpotifySession”)
userDefaults.synchronize()
// 6-通知通知中心登录成功
NotificationCenter.default.post(名称:Notification.Name(原始值:“ loginSuccessfull”),对象:无)
})
返回真
}
返回假
}
- 此函数告诉应用程序如何处理回调URL
- 这将检查您的重定向URL是否合适
- 在handleWithCallback闭包中处理回调,
- 如果有错误,请处理
- 如果有有效的会话令牌,请添加到用户默认设置
- 告诉通知中心首先触发登录:主视图控制器控制器中的方法
12.在主视图控制器中创建第一个登录功能
- 回到MainViewController。 添加到ViewDidLoad:
设定()
NotificationCenter.default.addObserver(自身,选择器:#selector(ViewController.updateAfterFirstLogin)
2.然后在ViewDidLoad下添加以下函数:
func updateAfterFirstLogin(){
如果让sessionObj:AnyObject = userDefaults.object(forKey:“ SpotifySession”)作为AnyObject? {
让sessionDataObj = sessionObj为! 数据
让firstTimeSession = NSKeyedUnarchiver.unarchiveObject(with:sessionDataObj)作为! SPT会话
self.session = firstTimeSession
initializePlayer(authSession:会话)
}
3.在updateAfterFirstLogin下面添加此函数:
func initializePlayer(authSession:SPTSession){
如果self.player == nil {
self.player = SPTAudioStreamingController.sharedInstance()
self.player!.playbackDelegate =自我
self.player!.delegate =自我
尝试! 播放器!.start(withClientId:auth.clientID)
self.player!.login(withAccessToken:authSession.accessToken)
}
}
这里有很多事情。 让我们一步一步地分解
- 这告诉通知中心触发在下一个子步骤中创建的updateAfterFirstLogin方法
- 声明全局会话和播放器变量。 SPTSession是Spotify SDK会话的子类,而SPTAudioStreamingController是AVFoundation播放器的SDK替代品
- 此功能解包已存档的SPT会话对象。 如果存在,则将该对象传递给initalizePlayer()函数(在下一步中)
- 此功能至关重要。 它首先检查SPTAudiosStreamingController是否已初始化。 如果不是,该函数将初始化播放器,使视图控制器为其委托,并使播放器正常工作。
–
4.将此函数粘贴到您的MainViewController中:
func audioStreamingDidLogin(_ audioStreaming:SPTAudioStreamingController!){
//在用户验证会话身份之后,将初始化SPTAudioStreamingController,并将此方法称为
打印(“已登录”)
self.player?.playSpotifyURI(“ spotify:track:58s6EuEYJdlb0kO7awm3Vp”,startingWith:0,startingWithPosition:0,回调:{(错误)
如果(错误!=无){
打印(“正在播放!”)
}
})
}
SpotifyAudioStreamingDelegate具有多个功能,其中之一是audioDidLogin。 音频登录后,将播放David Hasselhoff的King Fury的“ True Survivor”
13.运行项目
点击登录
输入Spotify高级帐户的凭据
点击打开的页面:
如果有效,则登录按钮将被隐藏,您将听到音乐流!
在此处下载Github上的源代码
本教程的第二部分将更深入地播放歌曲,专辑和播放列表。 有什么问题吗? 在Twitter或Linkedin上与我联系。
关于Elon:Elon是iOS开发人员(完整堆栈),UI / UX设计师,产品经理,数据架构师,律师和音乐家。 他是 Venn的 iOS 首席工程师 (iOS,请 在此处 下载 )。 他还担任 AngelHack 的技术顾问 ,并曾创建过多家技术公司。 您可以在 Twitter 或 Linkedin 上与他联系 。