问题标签 [apple-musickit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
431 浏览

ios - 如何在 iOS 13 上访问用户音乐库

从 iOS 9.3 开始,我们可以使用 APISKCloudServiceController.requestAuthorization请求访问用户音乐库的权限。文档说 Xcode 11 上这个 API 的唯一变化是对 tvOS 的支持,它不应该改变 iOS 上的任何东西(这是我正在使用的平台)。

但是,从 Xcode 11 beta 4 开始,我注意到SKCloudServiceController.requestAuthorization回调没有被调用。

我的问题是:是否有新的 API 要求访问音乐库,或者这是 iOS 13 的错误?

我在 Apple Developer Forums 上发现了两个未解决的讨论,涉及相关问题:

SKCloudServiceController.requestAuthorization 在 iOS 13 上不起作用

MPMedialLibrary.requestAuthorization 在 iOS13 设备上不起作用

0 投票
1 回答
205 浏览

ios - MPMusicPlayerController 继续播放后跳到下一首歌曲

我正在使用MPMusicPlayerController播放 Apple Music 中的歌曲。我定期(每隔几秒钟)使用更改歌曲队列

setQueue(with: MPMusicPlayerStoreQueueDescriptor(storeIDs: ids))

我在播放音乐时没有任何问题,歌曲队列按要求更新,我可以跳到下一首歌曲,一切都很好。但是,每当我在歌曲中间暂停播放器时,请稍等片刻,直到设置新队列,然后再次播放 - 当前歌曲丢失,下一首歌曲开始播放!

所以想象以下情况:

  1. 我有歌曲A, B, C, D
  2. 我将其设置为歌曲队列并调用play()
  3. player.nowPlayingItem返回A
  4. E, F, G, H我在播放时将歌曲队列设置为
  5. 我打电话player.skipToNext()- 歌曲E按预期开始播放
  6. 我呼唤player.pause()——歌曲E停顿
  7. 我打电话player.play()- 歌曲E继续播放。到目前为止一切都很好
  8. player.pause()再次呼唤——歌曲E暂停
  9. 我将歌曲队列设置为I, J, K, L.
  10. 我打电话player.play()-我希望暂停的歌曲E继续播放。相反,歌曲I开始播放

我还为上述场景做了一些日志输出:

奇怪的是,即使我在两者之间更改队列,从锁定屏幕暂停/播放也可以正常工作。

有没有人遇到过类似的问题,任何提示/解决方法如何解决这个问题?

0 投票
1 回答
1993 浏览

ios - MPMusicPlayerController 无法从 Apple Music 播放

我正在尝试播放 Apple Music 中的歌曲,但失败并显示以下日志:

我还尝试了来自 Apple 的官方示例代码项目,名为Adding-Content-to-Apple-Music,并得到了类似的结果:

这个问题有时会通过玩应用程序、去 Apple Music 应用程序、在那里播放一些东西、杀死它、回来等等来随机解决......

如果有人遇到过类似的问题,请告诉我如何解决。

发生在 iOS 12 和 13、iPhone 6s 和 iPhone 11 上,Apple Music 帐户目前处于 3 个月的试用期。所有音乐功能都存在,能够成功获取开发者令牌和音乐用户令牌,都可以与 Apple Music API 请求一起正常工作。

0 投票
0 回答
141 浏览

javascript - Head Meta Tag MusicKit JS 中的 Apple Developer Token

在开始在 react 应用程序中使用 MusicKit JS 时,我在此处的文档中遇到了这种用于加载库(没有 NPM 包可用)的方法:

这非常简单,但是将开发人员令牌放在任何人都可以阅读的地方似乎并不安全。

问题:这是否安全,和/或是否有更好的方法来做到这一点?

作为记录,我确实尝试了设置“musickitloaded”事件侦听器的方法,但我无法让它始终如一地触发。

此外,使用如下环境变量不会隐藏令牌:

0 投票
1 回答
100 浏览

apple-musickit - Mac:如何删除 Apple Music OAuth 应用程序权限

应用程序(“我的特殊应用程序”)对我的帐户具有 Apple Music OAuth 权限。

从我的桌面(Apple Mac OS)...如何删除这些权限,以便 Apple 的 MusicKit JS 再次提示我进行授权?

0 投票
0 回答
150 浏览

apple-musickit - Apple MusicKit JS:如何播放完整歌曲,而不是预览?

o/

配置应用程序,启用 Apple Music 订阅,在我的网络应用程序中授权该用户,每当我从媒体队列播放歌曲时,我只会听到预览播放,而不是完整的歌曲。当我在 Apple Music 网站上以相同方式授权时,它会播放整首歌曲。

我在localhost上开发,但是所有cookies和localstorage项都设置好了,所以刷新后不会弹出授权。

我是否错过了一些我需要传递给 API 才能播放完整歌曲的魔法参数?

谢谢

0 投票
0 回答
58 浏览

apple-music - Apple Music API 中有多少个排行榜位置可用?

示例调用:https ://api.music.apple.com/v1/catalog/us/charts?types=songs&genre=34

帮助页面(https://developer.apple.com/documentation/applemusicapi/get_catalog_charts)说结果是分页的,一次可以检索 50 个位置。我想知道总共可以检索多少个位置(或者等效地,最大偏移量是多少)?谢谢。

0 投票
0 回答
48 浏览

api - 将曲目上传到 Apple Music (API)

有没有办法将曲目从我的电脑上传到 Apple Music?

Apple 提供了一个 API,但我只找到了以下请求:

POST https://api.music.apple.com/v1/me/library/playlists/{id}/tracks

据我了解,此请求可以将曲目添加到已上传到 Apple Music 的播放列表中。

0 投票
0 回答
82 浏览

ios - MPMediaPickerController 与 MPMediaTypeMusic "for you" 或 "browse" 为空

我正在使用MPMediaPickerController播放我自己的文件(本地或在云中购买)。这是我使用的代码

除了“为您”和“浏览”选项卡外,一切正常。我有一个有效的苹果音乐订阅(通过SKCloudServiceCapability->验证musicCatalogPlayback)。

但是当我打开时,MPMediaPickerController我看到了一个无限的微调器。

知道我可能做错了什么吗?

这是我的应用程序中的无限微调器视图MPMediaPickerController 在此处输入图像描述

0 投票
1 回答
435 浏览

api - Apple Music API - 如何获取用户标识符?

从 Apple Music API 获取音乐令牌后,我试图检索用户的信息。似乎 /me 端点不可用于店面以外的查询(https://api.music.apple.com/v1/me/storefront)。

问题是,我需要用唯一的 ID 识别每个用户,所以我需要检索任何有用的信息来做到这一点(例如,电子邮件地址可能是一个很好的起点)。

在 Apple Music API 开发者页面中,我找不到任何端点可以这样做。有什么我想念的吗?

谢谢 :)