Spotify SDK Demo Swift 可以工作,但不能翻译为基于 Storyboard 的项目

Posted

技术标签:

【中文标题】Spotify SDK Demo Swift 可以工作,但不能翻译为基于 Storyboard 的项目【英文标题】:Spotify SDK Demo Swift works but cannot be translated to Storyboard-based project 【发布时间】:2020-10-17 19:01:41 【问题描述】:

计划:Spotify Premium 国家/地区:比利时设备:iPhone 11 Pro Max 操作系统:ios 13.5 + macOS Catalina

亲爱的

我在 Xcode (https://github.com/spotify/ios-sdk) 中正确安装了 iOS SDK,并正确设置了服务器令牌交换和刷新 => demo swift login 运行良好。

现在我正在尝试将其集成到我的 iOS 应用程序中,但它根本不起作用。我测试了所有可能的东西,并将其分解为对演示的最小更改,以更好地了解可能导致它失败的原因。见下文:

我设置了一个基本的 Xcode iOS 应用程序 我不使用在演示中使用编程创建视图,我使用情节提要(仅与演示代码不同) 我将所有内容都设置为完全相同,它构建并在 iPhone 设备上运行良好,没有任何错误或任何警报消息 当我单击“连接”时,它会按预期要求使用“Spotify”的权限,我回答是,它切换到 Spotify 并开始播放歌曲 它切换回我的应用程序并仍然显示“连接”按钮 调试时,我在每个 sessionManager、应用程序方法和 appRemote 事件函数都设置了断点,显然没有一个被捕获。当我在演示项目中执行相同操作时,它会在断点处停止

我的结论:

代表不工作并且似乎没有正确分配,因为没有捕获到任何事件 有什么奇怪的?每行代码与演示项目完全相同,只是我使用场景,所以我的项目中有一个 SceneDelegate.swift 文件。

我尝试将一些代码(例如对 SceneDelegate 文件的委托分配)转移到相应的事件中,但效果不佳,并且 openURL 方法与应用程序打开 url 方法中的方法不同,所以我没有知道如何在场景级别翻译 openURL 调用:

应用级openURL

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool 
    
    rootViewController.sessionManager.application(app, open: url, options: options)
    return true

场景级openURL

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) 
    
    

我迷路了,我花了 3 天时间尝试一切,但没有任何效果。顺便说一句,我经常使用 Web API 没有任何问题,所以我非常了解 Spotify 身份验证过程。

有人可以帮我吗?因为 iOS 示例,老实说,它们很难找到解决方案。

或者至少请给我一些提示,我被卡住了..

非常感谢,尼科

【问题讨论】:

【参考方案1】:

看起来this github 的答案可能会对您有所帮助。它告诉您需要进入场景级别 openURL 的内容:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) 

    print("Opened url")
    guard let url = URLContexts.first?.url else 
        return
    
    lobbyAdminVC.sessionManager.application(UIApplication.shared, open: url, options: [:])

希望对您有所帮助,或者其他帖子中的答案/cmets 有帮助!

【讨论】:

以上是关于Spotify SDK Demo Swift 可以工作,但不能翻译为基于 Storyboard 的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何降低或提高 Spotify SDK Swift 中的音乐音量

Spotify iOS SDK Swift 显示所有 (!) 播放列表 (20+)

如何使用 Spotify SDK 和 Swift 3 正确处理令牌刷新。错误代码 = 3840

无法播放歌曲 Spotify SDK

无法使用 Spotify iOS App Remote SDK 禁用自动播放

使用 spotify api 控制 spotify web player sdk 的播放状态