Spotify-iOS-SDK-possanfork 0.8

Spotify-iOS-SDK-possanfork 0.8

许可证 自定义
发布最后发布2015年5月

Per-Olov Jernberg维护。



警告:这是Spotify iOS SDK的一个测试版。

Spotify iOS SDK README

欢迎来到Spotify iOS SDK!本Readme是为希望开发包含音频流、播放列表操作、搜索等功能的应用程序的开发者编写的。

使用此SDK受限于开发者使用条款

测试版发布信息

我们提前发布此SDK是为了从开发社区获取关于我们iOS SDK未来的反馈。请在我们的问题跟踪器提交反馈关于缺失的问题或错误,确保您搜索现有的问题,并为这些问题添加声音,而不是重复。

有关已知问题和对发布说明的详细信息,请参阅CHANGELOG.md文件。

要求

Spotify iOS SDK需要iOS 7或更高版本的部署目标。以下架构受到支持:对设备的armv7armv7sarm64,对iOS模拟器的i386x86_64。不能使用i386x86_64构建Mac应用程序。

入门

将Spotify iOS SDK添加到您的应用程序中很简单

  1. Spotify.framework库添加到您的Xcode项目中。
  2. -ObjC标志添加到项目中“其他链接器标志”的构建设置中。
  3. AVFoundation.framework添加到项目的“链接二进制与库”的构建阶段。
  4. 在源文件中导入#import <Spotify/Spotify.h>

库的头文件有详尽的文档,并附带一个由Xcode本身以及类似Dash的应用程序可以索引的Xcode文档集。这,加上包含的演示项目,应该为您提供了一切所需,以开始开发。使您能迅速入门的类包括

  • SPTAuth包含用户认证的方法。有关此功能的示例,请参阅“基本认证”演示项目。请务必阅读下列的“认证和范围”和“会话寿命”部分,因为认证相当复杂。

    注意:要执行音频播放,您在使用 SPTAuth 时必须请求 SPTAuthStreamingScope 权限。为此,请将包含常量的数组传递给 -loginURLForClientId:declaredRedirectURL:scopes:。如果需要,已提供的演示项目已经完成了这一操作。

  • SPTRequest 包含搜索、获取播放列表和执行元数据查找的方法。大多数元数据类(如 SPTTrackSPTArtistSPTAlbum 等)也包含便捷方法。

身份验证和权限

您可以在 Spotify 开发者网站的 我的应用程序 部分生成您应用程序的 Client ID、Client Secret 并定义您的回调 URI。之前 SDK 版本提供的临时密钥将不会在 Beta 3 及更高版本中工作。

当将用户连接到您的应用程序时,您必须提供应用程序操作所需的权限。权限是访问用户账户特定部分的权限,如果不请求所需的权限,则在尝试执行各种任务时将收到拒绝权限的错误。

您不需要权限来访问非用户特定信息,如执行搜索、查找元数据等。

常见的权限包括

  • SPTAuthStreamingScope 允许 Premium 用户进行音乐流媒体播放。

  • SPTAuthUserReadPrivateScope 允许访问用户的私人信息,例如全显示名称、用户照片等。

  • SPTAuthPlaylistReadScopeSPTAuthPlaylistReadPrivateScope 允许分别访问用户的公开和私人播放列表。

  • SPTAuthPlaylistModifyScopeSPTAuthPlaylistModifyPrivateScope 允许分别修改用户的公开和私人播放列表。

权限的完整列表可在文档和 SPTAuth.h 中找到。

如果用户已连接到您的应用程序后,您应用程序的权限发生变化,您需要删除存储的凭证,并以新权限重新验证用户。

重要:仅请求您应用程序需要的权限。例如,当您的应用程序不使用播放列表时请求播放列表访问是不良的做法。

会话有效期

您的用户进行身份验证后,您将收到一个 SPTSession 对象,该对象允许您执行受保护请求。此会话仅在一段时间内有效,必须进行刷新。

通过调用 SPTSession 上的 -isValid 方法和使用 expirationDate 属性,您可以找到会话是否仍然有效。一旦会话无效,您就可以使用 SPTAuth-renewSession:withServiceEndpointAtURL:callback: 方法更新它。

例如,当您的应用程序启动时,您将想要恢复存储的会话,然后检查其有效性并在必要时更新它。您的代码流程可能如下所示

SPTSession *session = …; // Restore session

if (session == nil) {
    // No session at all - use SPTAuth to ask the user
    // for access to their account.
    [self presentFirstTimeLoginToUser];

} else if ([session isValid]) {
    // Our session is valid - go straight to music playback.
    [self playMusicWithSession:session];

} else {
    // Session expired - we need to refresh it before continuing.
    // This process doesn't involve user interaction unless it fails.
    NSURL *refreshServiceEndpoint = …;
    [[SPTAuth defaultInstance] renewSession:session
                   withServiceEndpointAtURL:refreshServiceEndpoint
                                   callback:^(NSError *error, SPTSession *session)
        {
            if (error == nil) {
                [self playMusicWithSession:session];
            } else {
                [self handleError:error];
            }
        }];
}

从 CocoaLibSpotify 迁移

CocoaLibSpotify 是基于 libspotify 库的,该库包含大量遗留代码,是一个非常复杂的库。虽然这提供了一些功能,但它也会消耗大量的 RAM 和 CPU 资源,这并不适合移动平台。

Spotify iOS SDK 基于完全新的技术堆栈,旨在避免这些问题,同时仍然提供丰富的功能集。由于这种新的体系结构,我们做出了从头开始使用 Spotify iOS SDK API 的决定,而不是尝试将新技术塞入 CocoaLibSpotify 的 API。这导致了一个更易于使用且与 CocoaLibSpotify 相比具有极小 CPU 和 RAM 足迹的库。

Spotify iOS API 与 CocoaLibSpotify 不具备完全相同的1:1功能一致性。它包含CocoaLibSpotify不具备的功能,同时CocoaLibSpotify也有Spotify iOS SDK不具备的功能。我们正在努力缩小这一差距,如果您认为Spotify iOS SDK缺少某个特别重要的功能,请与我们联系,以便我们正确确定优先级。

由于CocoaLibSpotify与Spotify iOS SDK的API和功能差异,我们理解迁移可能困难。因此,CocoaLibSpotify将在该SDK退出测试阶段后仍可用一段时间。