【问题标题】:Creating a Playlist for an Apple Music User为 Apple Music 用户创建播放列表
【发布时间】:2020-01-17 16:29:08
【问题描述】:

我在 React Native 中创建了一个应用程序,它允许用户搜索歌曲,它使用 Apple Music API。到目前为止,一切顺利。

下一步。我想要做的是使用用户搜索过的歌曲,并让他们将它们保存为 Apple Music 帐户中的播放列表(假设他们是订阅者等)。

但是,似乎缺乏有关如何执行此操作的文档和示例(至少与 Spotify 相比 - 我正在重新创建我过去制作的 Spotify 应用程序)。

我需要从用户那里获得授权,然后使用这个端点:https://developer.apple.com/documentation/applemusicapi/create_a_new_library_playlist,但我不知道该怎么做。 API 文档的其他部分似乎只是简单地说明“通过用户的适当授权,您还可以创建或修改播放列表并将评级应用于用户的内容。”但从未真正解释或链接到如何获得此授权。

谁能指出我正确的方向?让我知道我正在尝试做的事情是否真的可以通过 Apple Music - 看起来是这样,但我绕圈子的方式,我不再那么确定了。谢谢

【问题讨论】:

    标签: react-native playlist apple-music apple-musickit


    【解决方案1】:

    我不知道这是否会有所帮助(我是 iOS 开发人员,而不是 React 开发人员),但这是在 Swift 中将播放列表保存到用户音乐库的调用。也许它会帮助你指出正确的方向(?)

    如果您不想让 Swift 代码污染您的线程,请告诉我,我会删除它。

    import StoreKit
    // ...
    
    
    // request user token
    if let devToken = UserDefaults.standard.string(forKey: "devToken") {
    
        SKCloudServiceController().requestUserToken(forDeveloperToken: devToken, completionHandler: { userToken, _ in
    
            guard let _ = userToken else { return }    
            self.addPlaylist()
        })
    }
    
    
    // add playlist
    func addPlaylist() {
    
        MPMediaLibrary.default().addItem(withProductID: "pl.u-065LACYzL34", completionHandler: { _, error in
    
            guard error == nil else {
                print("add playlist sad")
                return
            }
            // success
        })
    }
    

    【讨论】:

      【解决方案2】:

      我一直在考虑尝试这样做。

      MusicKit JS 在浏览器中工作,但由于 iOS 中没有浏览器,所以这是不行的:没有Window.musicKit.getInstance()。而且我还没有找到任何其他方式来授权 MusicKit,使用 JavaScript,除了 MusicKit JS。

      可以通过 API 访问 Apple 音乐目录,只需一个开发者令牌。您甚至可以访问(只读)用户的播放列表,如果它是公开的并且您知道全局 ID,但这不是我们在这里所追求的。我们希望访问用户的图书馆,以便我们可以做一些事情(删除除外,因为您无法通过 Apple Music API 删除内容)。

      要在 iOS 中授权访问用户的库,您需要使用 StoreKit,根据 this,并且为了使用 React Native 执行此操作,您需要根据 this 使用 Native Modules。

      第二点的问题是我不知道该怎么做。我已经阅读了一些东西,但我还没有连接到点。

      如果您(或任何人)已经解决了这个问题,那么在这里写一个带有操作方法的便条会很棒。如果我弄明白了,我会回来发帖的。

      更新:我找到了this article,这几乎可以很好地解释它。

      我在这里遇到的问题是,在 添加一个 React Native iOS 项目部分,有一个未完成的句子(“我们在这里创建...”),我似乎无法当我运行作者提供的步骤时找到React.xcodeproj

      【讨论】:

      • 恐怕除此之外我没有做这方面的工作,但显然还有另一个开发人员正在做这件事,所以如果我得到任何进展的消息,我会更新这个。对原生模块的需求很有趣——我没有遇到过。
      【解决方案3】:

      补充说明:您可以在快捷方式中的页面上运行 Javascript,但前提是您从 Safari 的 sharesheet 运行快捷方式。

      此外,与您在许多教程中看到的相反,请记住,对于 POST 请求,标头 Music-User-Token 的值没有“Bearer”一词。在 GET 请求中使用“Bearer”字也可以。我已经构建了网页以获取音乐用户令牌到剪贴板并将其保存以在快捷方式中使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多