如何在 React Native 应用程序中实现 Apple MusicKit,包括 Apple 身份验证?
我无法访问用户 Apple Music。我得到的错误是
[core] "Error returned from daemon: Error Domain=com.apple.accounts Code=9 "(null)""
2019-02-04 19:14:37.250467+0900 SSAccountStore: Failed to fetch the backing accounts. error = Error Domain=com.apple.accounts Code=9 "(null)"
2019-02-04 19:14:37.252008+0900 [core] "Error returned from daemon: Error Domain=com.apple.accounts Code=9 "(null)""
2019-02-04 19:14:37.252051+0900 SSAccountStore: Failed to fetch the backing accounts. error = Error Domain=com.apple.accounts Code=9 "(null)"
2019-02-04 19:14:37.253604+0900 SSAccountStore: Unable to get the local account. error = Error Domain=SSErrorDomain Code=100 "Cannot connect to iTunes Store" UserInfo={NSLocalizedDescription=Cannot connect to iTunes Store}
Run Code Online (Sandbox Code Playgroud)
然而,这段代码的奇怪部分是我还能够检索音乐用户令牌。有什么我想念的吗?任何帮助表示赞赏。
static func …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码播放专辑…
let predicate = MPMediaPropertyPredicate(value: "1459938538", forProperty: MPMediaItemPropertyAlbumPersistentID)
let iCloudPredicate = MPMediaPropertyPredicate(value: true, forProperty: MPMediaItemPropertyIsCloudItem)
let query = MPMediaQuery.albums()
query.filterPredicates = [predicate, iCloudPredicate]
let mp = MPMusicPlayerController.applicationMusicPlayer
mp.setQueue(with: query)
mp.play()
Run Code Online (Sandbox Code Playgroud)
但是它失败了
[SDKPlayback] -[MPMusicPlayerController prepareToPlay] timeout
[MediaRemote] MRC <MPCPlayerPath: route=<MPAVEndpointRoute: 0x280f1a280 name=iPhone uid=LOCAL> origin=iPhoneID bundleID=com.apple.MediaPlayer.RemotePlayerService playerID=MPMusicPlayerApplicationController>: Undo optimistic state [failed] command=Play error=Error Domain=MPCPlayerRequestErrorDomain Code=1000 "Failed to send command 0 (MRMediaRemoteCommandHandlerStatus = 1)" UserInfo={NSDebugDescription=Failed to send command 0 (MRMediaRemoteCommandHandlerStatus = 1), MPCPlayerErrorKeyMediaRemoteCommandHandlerStatus=1}
[SDKPlayback] -[MPMusicPlayerController play] completed error: Error Domain=MPCPlayerRequestErrorDomain Code=1000 "Failed to …
mpmusicplayercontroller mpmediaquery ios swift apple-musickit
我目前正在尝试阅读所有用户库播放列表。我需要的是以下内容:ID、名称、描述、歌曲和艺术品。端点"https://api.music.apple.com/v1/me/library/playlists?limit=100"
返回以下响应:
{
"data": [
{
"id": "p.oOzAa4gIlaQaBVx",
"type": "library-playlists",
"href": "\/v1\/me\/library\/playlists\/p.oOzAa4gIlaQaBVx",
"attributes": {
"name": "Drake",
"description": {
"standard": ""
},
"hasCatalog": true,
"canEdit": true,
"playParams": {
"id": "p.oOzAa4gIlaQaBVx",
"kind": "playlist",
"isLibrary": true,
"globalId": "pl.u-Zmblx9rU02m2DXJ"
},
"dateAdded": "2017-10-30T21:39:45Z"
}
},
etc...
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,尽管 API 文档将艺术作品指定为属性 ( https://developer.apple.com/documentation/applemusicapi/libraryplaylist/attributes
),但艺术作品属性并不存在,我尝试使用,?include=artwork
即使它是属性而不是关系,但没有奏效。任何想法如何检索艺术品?如果我无法从苹果音乐 API 获得它,还有其他方法可以获得艺术品吗?我已经坚持了一段时间,所以任何帮助表示赞赏!
我正在使用 Spotify 和 Apple Music API 开发一个应用程序。Spotify 有一个端点称为/me/player/currently-playing
返回登录用户当前播放的歌曲。Apple Music API 是否有等价物?
我知道 Apple Music API 有一个“最近播放”端点,但我不确定这个端点是否会返回当前正在播放歌曲的用户。我是否可以使用其他服务来实现 Apple Music 的这一目标?
我试图了解Apple Music API的工作原理,并坚持如何搜索歌曲并获取其ID.我在Google上做了一些研究,大多数人建议使用iTunes Search API.但是,Apple Music API还提供了自己的搜索API.我尝试了这两个,两者都可以返回正确但非常不同的结果.此外,并非iTunes Search API的所有结果都可播放.所以我猜测使用iTunes搜索是一种获取跟踪ID的旧方法.在iOS 11之后,我们应该使用Apple Music搜索API.有人肯定这个吗?
(对于不可播放的iTunes搜索结果,我在URL中附加了s = [countryID],我可以从返回的结果中看到正确的国家/地区,并且isStreamable = 1)
另外,我注意到,使用苹果音乐API,我们需要追加店面国家代码的URL,国家代码仅在MusicKit此前的iOS 11个可用的iOS 11后,我们只能从MusicKit获得国家ID,所以有没有办法将国家ID转换为国家代码?
我在我的IOS应用程序中第一次使用apple music api.我已经在python命令的帮助下生成了开发人员令牌.
每次请求用户令牌时都会收到错误"请求用户令牌时发生错误:操作无法完成.(SKErrorDomain错误7.)"
我的开发人员令牌看起来像"esfd .......................................... ....................................... MPO"
if #available(iOS 11.0, *)
{
SKCloudServiceController().requestUserToken(forDeveloperToken:
developerToken, completionHandler: { (userToken, error) in
print("An error occurred when requesting user token: \(error!.localizedDescription)")
})
}
else
{
SKCloudServiceController().requestPersonalizationToken(forClientToken: developerToken, withCompletionHandler: { (userToken, error) in
print("An error occurred when requesting user token: \(error!.localizedDescription)")
})
}
Run Code Online (Sandbox Code Playgroud)
请有人帮帮我....
我目前正在制作一个快捷应用,该应用可以通过MusicKit / Apple Music API为用户创建播放列表。它将在用户库中创建此播放列表,并返回格式的ID p.XXXXXXXX
。然后,我想打开iOS音乐应用并通过打开itunes.apple.com/us/playlist/XXXXXX?app=music
链接向用户显示新创建的播放列表。但是,此URL的ID均为格式pl.XXXXXXXX
。Mac iTunes应用程序具有一个Share Playlist
按钮,可以获取pl.XXXXXXX
播放列表的ID,但是当Apple Music API仅返回ID时,如何快速获取此ID p.XXXXXXXXXX
?谢谢!
从 Apple Music API 获取音乐令牌后,我试图检索用户的信息。似乎 /me 端点不适用于店面以外的查询(https://api.music.apple.com/v1/me/storefront)。
问题是,我需要用唯一的 ID 来标识每个用户,所以我需要检索任何好的信息来做到这一点(例如,电子邮件地址可能是一个很好的起点)。
从 Apple Music API 开发人员页面,我找不到任何端点可以这样做。有什么我想念的吗?
谢谢 :)
我试图在我的应用程序中使用 Apple 的 Music Kit 来听音乐。我的问题是播放的第一首歌曲会不断重复。使用以下代码正确播放第一首歌曲:
let mediaArray = [songsApple?[songNumber!]]
let playableColledction = MPMediaItemCollection.init(items: mediaArray as! [MPMediaItem])
applicationMusicPlayer.setQueue(with: playableCollection)
applicationMusicPlayer.play()
self.activateAudioSession
Run Code Online (Sandbox Code Playgroud)
activateAudioSession 方法是:
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
try audioSession.setActive(true)
}
catch let error {
print(error.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)
为了检测歌曲的结尾,我使用了 Apple Music 文档中的以下观察者:
applicationMusicPlayer.beginGeneratingPlaybackNotications()
NotificationCenter.default.addObserver(self, #selector(didFinishSong), name: Notification.Name.MPMusicPlayerControllerNowPlayingItemDidChange, object: nil)
Run Code Online (Sandbox Code Playgroud)
didFinishSong 方法用于从songsApple 数组中获取下一首要播放的歌曲的songNumber。然后将此信息传递回播放歌曲的方法以获取 mediaArray。但是,现在,当歌曲播放结束时,didFinishSong 不会被调用,而是从头开始重复播放。
我在检测歌曲结尾时做错了什么吗?还有另一种方法吗?我也尝试使用计时器,但由于某种原因,只要应用程序进入后台,计数就会不准确,它就会停止计数。
预先感谢您提供的任何帮助。如果您需要更多信息,请不要犹豫,我会澄清更多。
audio-player mpmusicplayercontroller swift apple-music apple-musickit
apple-musickit ×10
apple-music ×6
swift ×5
ios ×4
android ×1
api ×1
audio-player ×1
expo ×1
json ×1
mpmediaquery ×1
react-native ×1
spotify ×1