Сообщения поблизости от Google: сообщения не принимаются - PullRequest
0 голосов
/ 28 ноября 2018

Я испытываю API близлежащих сообщений Google, который, кажется, прост в использовании, но по какой-то причине он не работает должным образом.Я подозреваю, что проблема является чем-то тривиальным, но я не смог решить это.

Я дважды проверил правильность API-ключа, а также добавил разрешения для NSMicrophoneUsageDescription и NSBluetoothPeripheralUsageDescription в Info.plist.

API ближайших сообщений включен вКонсоль разработчика Google и ключи 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))")
        })
    }

}

У кого-нибудь еще были проблемы с настройкой?

1 Ответ

0 голосов
/ 20 декабря 2018

Хорошо, для тех, у кого такая же проблема, решение было довольно простым и почти неловким.Необходимо сохранить публикацию и результат подписки в переменной класса:

    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))")
        })
    }
...