0

我正在尝试这样的事情来设置当前源,然后使用源检索上一首曲目(确认currentPandoraStation具有id):

self.setPandoraSource(sourceId: currentPandoraStation.id) { (status) in
                    guard status == true else { return }
                    self.skipToPreviousPandoraSource(trackViewModel: trackViewModel) { (track) in
                        self.doPlay(track, startPlayback: true, errorHandler: errorHandler)
                    }
                }

我的 SetSource 查询:

mutation SetSource($deviceUuid: String!, $sourceId: String!) {
    playback {
    setSource (deviceUuid: $deviceUuid, sourceId: $sourceId) {
        id
        type
        current {
            ... on TrackItem {
                index
                ..(other values fetched)
            }
        }
    }
  }
}

我之前的查询:

mutation SkipToPreviousTrack($deviceUuid: String!, $sourceId: String!, $index: Int!, $elapsedTime: Float!) {
  playback {
    previous(deviceUuid: $deviceUuid, sourceId: $sourceId, index: $index, elapsedTime: $elapsedTime) {
      status
      current {
        ... on TrackItem {
            track {
                ... on Track {
                    ...TrackDetails
                }
            }
        }
      }
    }
  }
}

如果我没有正确理解实现,请告诉我。谢谢。

4

1 回答 1

0

我建议您仔细检查各种代码路径,以确保在执行任何其他操作之前始终设置源。

此错误(和其他错误)记录在Pandora开发人员中心的此页面上。如文档中所述,设备 UUID 在两种情况下都需要相同:

来自开发者中心的 SOURCE_NOT_SET 信息

另外,请注意,如果用户/听众最近没有进行任何播放,则可能需要再次设置源。会话信息(包括当前来源)会缓存一段时间,但我们不保证该时间段有多长。

根据您发布的代码,我不能 100% 确定您要做什么。在我看来,您正在获取应该没问题的当前曲目,但是由于您在那里有“上一个”这个词,因此还值得注意的是,并不总是允许听众播放上一个曲目。听众能否做到这一点取决于几个因素(听众订阅状态、内容权限等)。请使用允许的交互数组中的值来确定应该向用户呈现哪些选项。以下是 Pandora 当前如何在我们的网络客户端上更改播放控件的一些示例(请注意,这是使用高级帐户;对于广告支持或 Plus 层,控件看起来会有所不同):

在 Pandora Premium 听众的专辑播放期间显示的上一个选项

Pandora Premium 听众的电台播放

请注意,这些屏幕截图仅用于说明目的,不应被视为允许内容的真实来源。API 返回的允许交互应始终用作事实来源,以确保您遵守当前的政策/实践。这里还有更多关于何时允许播放上一首曲目的信息。

于 2020-11-05T18:20:34.507 回答