适用于 ios 的 Spotify API:从 ios spotify api 下载、保存、访问曲目

Posted

技术标签:

【中文标题】适用于 ios 的 Spotify API:从 ios spotify api 下载、保存、访问曲目【英文标题】:Spotify API for ios: download , save , access tracks from ios spotify api 【发布时间】:2012-07-06 01:38:33 【问题描述】:

我想知道是否可以使用 spotify ios api(CocoaLibSpotify IOS 库)将曲目下载到 iphone / ipod / ipad 设备。如果是这样,我还需要访问它们并随时播放。稍后我将在我的应用中使用它们。

我想我们可以使用 sp_track_offline_status 检查正在播放的曲目的离线状态。但我无法度过难关。

任何示例代码 sn-p 都会有很大帮助。

简化要求:下载Spotify曲目并将其保存到iOS设备中

作为更新,为了响应 iKenndac 的回答,offlineStatus 属性已变为“1”,这意味着播放器已同步用于本地存储。

SP_PLAYLIST_OFFLINE_STATUS_YES = 1, ///

1.是否意味着播放列表中的所有曲目都已下载?

我不这么认为。因为还有其他状态如下:

typedef enum sp_playlist_offline_status 
  SP_PLAYLIST_OFFLINE_STATUS_NO          = 0, ///< Playlist is not offline enabled
  SP_PLAYLIST_OFFLINE_STATUS_YES         = 1, ///< Playlist is synchronized to local storage
  SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING = 2, ///< This playlist is currently downloading. Only one playlist can be in this state any given time
  SP_PLAYLIST_OFFLINE_STATUS_WAITING     = 3, ///< Playlist is queued for download
 sp_playlist_offline_status;

我从来没有得到离线状态 2 或 3。

    我的 offlineDownloadProgress 属性也总是显示“0”。 如果我没记错的话,它必须从“0”增加到“1”。

代码 sn-p:

[SPAsyncLoading waitUntilLoaded:playList 
                        timeout:kSPAsyncLoadingDefaultTimeout 
                           then:^(NSArray *loadedItems, NSArray *notLoadedItems)     
    playList.markedForOfflinePlayback = YES;
    currentPlaylist = playList;
    statusTimer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(checkOfflineStatus) userInfo:nil repeats:YES];

我正在检查状态如下:

-(void)checkOfflineStatus 

  NSLog(@"playlist offline progress is: %f",currentPlaylist.offlineDownloadProgress);

  NSLog(@"offline status: %d",currentPlaylist.offlineStatus);


输出如下所示:

2012-07-06 20:34:05.891 Simple Player[6571:10703] 播放列表离线进度为:0.000000

2012-07-06 20:34:05.892 Simple Player[6571:10703] 离线状态:1

2012-07-06 20:34:06.039 Simple Player[6571:10703] 播放列表离线进度为:0.000000

2012-07-06 20:34:06.039 简单播放器[6571:10703] 离线状态:1

接下来我能做什么?

【问题讨论】:

【参考方案1】:

您不能简单地将 Spotify 曲目下载为 MP3 文件或其他任何文件以进行独立播放。

但是,您可以让库缓存曲目以供以后离线播放,只要用户保持登录到 CocoaLibSpotify,就像 iOS Spotify 客户端一样。

SPPlaylist 具有用于启用离线访问的markedForOfflinePlayback 属性,然后播放列表的offlineDownloadProgressofflineStatus 属性提供更多信息。

CocoaLibSpotify 附带一个 Mac 示例应用程序,它缓存播放列表以供离线播放以查看其工作原理。该 API 在 Mac OS X 和 iOS 版本的 CocoaLibSpotify 上均可用且相同。

【讨论】:

您能否发布 Mac 示例应用程序的链接(以及示例应用程序的名称)以供离线播放。我一直在寻找那些但徒劳无功。 github.com/spotify/cocoalibspotify - 克隆 repo,项目位于 Mac Framework/Sample Projects/Offline Playlists iOS SDK 也会这样吗?在 TOS 中,除非用户是高级 Spotify 服务用户,否则似乎禁止本地缓存。如您所述,用户可以保持登录到 CocoaLibSpotify。希望在进行大量研发之前确认这一点。谢谢丹

以上是关于适用于 ios 的 Spotify API:从 ios spotify api 下载、保存、访问曲目的主要内容,如果未能解决你的问题,请参考以下文章

适用于 iOS 的 Spotify SDK,如何清除 playerQueue

UWP / XAML C# 是不是与 Spotify API 兼容?

反应/节点:Spotify API 错误:404 - 未找到活动设备

Spotify web api 不适用于 ios 设备

通过 Spotify API 在 skipToNext() 方法中使用回调

从 ionic iOS 原生到 WP rest API 的 http 请求出错(适用于 web 视图和 DevApp)