iOS Spotify SDK-Swift 3.0+教程

大多数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”),对象:无) 
  }) 
 返回真 
  } 
 返回假 
  } 

  1. 此函数告诉应用程序如何处理回调URL
  2. 这将检查您的重定向URL是否合适
  3. 在handleWithCallback闭包中处理回调,
  4. 如果有错误,请处理
  5. 如果有有效的会话令牌,请添加到用户默认设置
  6. 告诉通知中心首先触发登录:主视图控制器控制器中的方法

12.在主视图控制器中创建第一个登录功能

  1. 回到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) 
  } 
  } 

这里有很多事情。 让我们一步一步地分解

  1. 这告诉通知中心触发在下一个子步骤中创建的updateAfterFirstLogin方法
  2. 声明全局会话和播放器变量。 SPTSession是Spotify SDK会话的子类,而SPTAudioStreamingController是AVFoundation播放器的SDK替代品
  3. 此功能解包已存档的SPT会话对象。 如果存在,则将该对象传递给initalizePlayer()函数(在下一步中)
  4. 此功能至关重要。 它首先检查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 上与他联系