iOS 14 StoreKit - SKCloudServiceController 的 requestusertoken 未被正确调用

标签 ios swift authentication storekit apple-musickit

我正在尝试使用 Apple Music API 在 iOS 14 上播放歌曲。 我有开发者的 token ,我已经请求访问用户的苹果音乐的权限。

但是,当我调用 requestusertoken api ,它的闭包永远不会被调用,所以很明显我没有从请求中收到任何东西——甚至没有错误。这让我发疯。

这是我的代码。我做错了什么?

func getUserToken() -> String {
var userToken = String()

let lock = DispatchSemaphore(value: 0)

SKCloudServiceController().requestUserToken(forDeveloperToken: developerToken) { (receivedToken, error) in
    guard error == nil else { return }
    if let token = receivedToken {
        userToken = token
        lock.signal()
    }
}

lock.wait()
return userToken }

最佳答案

我试过代码,有两个主要问题。

首先,DispatchSemaphore 使返回行执行得太早。其次,由于最新的 iOS 14.3 问题,原始开发人员 token 无法使用。

所以,我首先删除了 DispatchSemaphore。

func getUserToken() {
    var userToken = String()
    
    SKCloudServiceController().requestUserToken(forDeveloperToken: developerToken) { (receivedToken, error) in
        guard error == nil else { return }
        
        if let token = receivedToken {
            userToken = token
            print(userToken)
        }
    }
}

然后在 repository 之后调整开发人员 token .

现在,它正在正确打印用户 token 。我希望这对您有所帮助。

关于iOS 14 StoreKit - SKCloudServiceController 的 requestusertoken 未被正确调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64624635/

相关文章:

ios - 奇怪的位移结果

ios - 标题中带有图像的自定义模态窗口

xcode - 如何在 Xcode 中定位代码中的错误而不是内存地址

ios - 如何删除 UITableView 上方的空白区域?

http - 静态资源的基本身份验证

ios - 带有动画 iOS 的删除线文本

ios - 包含 UIScrollView 的缩放后添加到 UIImageView 的注释不在正确的位置

ios - 如何在 ViewController 中将 AVPlayer 添加到 UIView

security - 将自定义上下文信息添加到 EJB 方法调用

javascript - 登录后查看 HTML 内容