ios 使用ShazamKit时如何解决(com.apple.ShazamKit错误202.)

wrrgggsh  于 2023-02-26  发布在  iOS
关注(0)|答案(2)|浏览(268)

我一直在尝试使用新的ShazamKit将Shazam匹配添加到我的应用程序中。我使用了苹果的示例代码,找到了here并对其进行了轻微的修改。

import ShazamKit
import AVFAudio
import Combine

@available(iOS 15.0, *)
class ShazamMatcher: NSObject, ObservableObject, SHSessionDelegate {

    // MARK: - Properties

    @Published var result: SHMatch?
    @Published var isRecording = false

    private var isInitialSetupDone = false
    private var session: SHSession?
    private let audioEngine = AVAudioEngine()

    // MARK: - Actions

    func match() throws {
        result = nil

        session = SHSession()
        session?.delegate = self

        try doInitialSetupIfNeeded()

        AVAudioSession.sharedInstance().requestRecordPermission { [weak self] success in
            guard success, let self = self else {
                return
            }
            try? self.audioEngine.start()
            self.isRecording = true
        }
    }

    func stopMatching() {
        audioEngine.stop()
        isRecording = false
    }

    // MARK: - Setup

    private func doInitialSetupIfNeeded() throws {
        guard !isInitialSetupDone else {
            return
        }

        let audioFormat = AVAudioFormat(
            standardFormatWithSampleRate: audioEngine.inputNode.outputFormat(forBus: 0).sampleRate,
            channels: 1
        )
        audioEngine.inputNode.installTap(onBus: 0, bufferSize: 2048, format: audioFormat) { [weak session] buffer, audioTime in
            session?.matchStreamingBuffer(buffer, at: audioTime)
        }

        try AVAudioSession.sharedInstance().setCategory(.record)
        isInitialSetupDone = true
    }

    // MARK: - SHSessionDelegate

    func session(_ session: SHSession, didFind match: SHMatch) {
        // Handle match here
    }

    func session(_ session: SHSession, didNotFindMatchFor signature: SHSignature, error: Error?) {
        // Handle error here
    }

}

但是,在调用match()时,委托最终会报告错误The operation couldn’t be completed. (com.apple.ShazamKit error 202.)
我已使用我的ShazamKit服务包标识符添加了一个新密钥并下载了.p8文件。我是否需要此文件?如果需要,如何使用?
有人能解决这个错误吗?

odopli94

odopli941#

我找到了一个解决方案。首先,显然应用程序间的音频授权必须启用。
其次,看起来您还需要一个SHSignatureGenerator(我认为调用matchStreamingBuffer就足够了
下面是有效的代码:https://github.com/heysaik/ShazamKit-Demo/blob/main/Shazam/ViewController.swift

mum43rcc

mum43rcc2#

1.转到您的开发人员帐户(developer.apple.com)。
1.在“标识符”下选择您正在处理的bundleid。
1.选择“应用程序服务”选项卡。
1.选中复选框“ShazamKit”并保存。

相关问题