Google附近的邮件:未收到任何邮件

约瑟

我正在尝试使用Google的附近消息API,该API似乎易于使用,但是由于某些原因,它无法按预期运行。我怀疑这个问题是微不足道的,但我无法解决。

我反复检查的API密钥是正确的,我还添加权限NSMicrophoneUsageDescription,并NSBluetoothPeripheralUsageDescription在Info.plist中。

在Google开发人员控制台中启用了“附近消息” API,并且API密钥已设置为仅限于应用程序的捆绑包标识符。如果取消了此限制,它也不起作用。

class ViewController: UIViewController {

    private var messageManager: GNSMessageManager?

    override func viewDidLoad() {
        super.viewDidLoad()

        GNSMessageManager.setDebugLoggingEnabled(true)

        messageManager = GNSMessageManager(apiKey: "<my-api-key>", paramsBlock: { (params: GNSMessageManagerParams?) -> Void in
            guard let params = params else { return }

            params.microphonePermissionErrorHandler = { hasError in
                if hasError {
                    print("Nearby works better if microphone use is allowed")
                }
            }
            params.bluetoothPermissionErrorHandler = { hasError in
                if hasError {
                    print("Nearby works better if Bluetooth use is allowed")
                }
            }
            params.bluetoothPowerErrorHandler = { hasError in
                if hasError {
                    print("Nearby works better if Bluetooth is turned on")
                }
            }
        })

        // publish
        messageManager?.publication(with: GNSMessage(content: "Hello".data(using: .utf8)))

        // subscribe
        messageManager?.subscription(messageFoundHandler: { message in
            print("message received: \(String(describing: message))")
        }, messageLostHandler: { message in
            print("message lost: \(String(describing: message))")
        })
    }

}

还有其他人在设置此设置时遇到问题吗?

约瑟

好的,对于任何有相同问题的人,解决方案都非常简单,几乎令人尴尬。必须将发布和订阅结果保存在类变量中:

    private var publication: GNSPublication?
    private var subscription: GNSSubscription?

    override func viewDidLoad() {
        super.viewDidLoad()

        messageManager = GNSMessageManager(apiKey: "<my-api-key>")

        // publish
        publication = messageManager?.publication(with: GNSMessage(content: "Hello".data(using: .utf8)))

        // subscribe
        subscription = messageManager?.subscription(messageFoundHandler: { message in
            print("message received: \(String(describing: message))")
        }, messageLostHandler: { message in
            print("message lost: \(String(describing: message))")
        })
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章