Swift 3 iOS -Google GMSAuto Полный сбой после обновления

Заголовок ошибки:

введите описание изображения здесь

Я использую гугл GMSAutocompleteViewController,

У меня есть мой API-ключ в AppDelegate, самый последний модуль для Swift 3 Xcode 8, импорт GoogleMaps и импорт GooglePlacesAPI находятся в верхней части vc и в appDelegate, и мое интернет-соединение в порядке.

Когда я использовал Swift 2.2, когда набирал адрес, все работало нормально. Теперь, когда я обновляюсь до Swift 3 время от времени, я делаю ошибку в адресе, затем появляется облачная надпись "Не удается загрузить результаты поиска". Когда я закрываю VC и пытаюсь снова, я продолжаю получать ту же подпись. Я попытался закрыть приложение и перезапустить симулятор, но он не дал мне доступ к службам автозаполнения. Я нахожусь под 2500 свободными ежедневными поисковыми лимитами, потому что это буквально только я тестирую приложение.

Я также заметил, что в документах Google AutoComplete говорится, что нужно использовать GMSPlacesClient.provideAPIKey("..."), но метод GMSPlacesClient provideAPIKey недоступен, поэтому я использую только GMSServices.provideAPIKey(".."). Интересно, это часть вопроса.

Кто-нибудь знает решение этой проблемы?

AppDelegate:

import UIKit
import GoogleMaps
import GooglePlacesAPI
import SystemConfiguration

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    override init() {
        super.init()

        //Google Maps API Key
        GMSServices.provideAPIKey("WORKS")

        GMSPlacesClient.provideAPIKey("DOES NOT WORK")
    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

мой код из GooglePlaces:

import UIKit
import GooglePlaces
import GoogleMaps

class ViewController: UIViewController {


  @IBAction func onLaunchClicked(sender: UIButton) {
    let acController = GMSAutocompleteViewController()
    acController.delegate = self
    present(acController, animated: true, completion: nil)
  }
}

extension ViewController: GMSAutocompleteViewControllerDelegate {

  func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
    print("Place name: \(place.name)")
    print("Place address: \(place.formattedAddress)")
    print("Place attributions: \(place.attributions)")
    dismiss(animated: true, completion: nil)
  }

  func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
    print(".....\(error)")
    dismiss(animated: true, completion: nil)
  }

  func wasCancelled(_ viewController: GMSAutocompleteViewController) {
    dismiss(animated: true, completion: nil)
  }
}

1 ответ

Решение

Вы должны положить GooglePlaces, GooglePlacePicker а также GoogleMaps в ваш Podfile:

pod 'GooglePlaces'
pod 'GooglePlacePicker'
pod 'GoogleMaps'

И предоставить ваш API_KEY:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    GMSPlacesClient.provideAPIKey("API_KEY_HERE")

    return true
}

Для получения дополнительной информации следуйте этому руководству: https://developers.google.com/places/ios-api/start

Другие вопросы по тегам