【问题标题】:Place auto complete is not working after updating to version 3.0.2 - Google iOS sdk更新到版本 3.0.2 后,地点自动完成功能不起作用 - Google iOS sdk
【发布时间】:2019-02-20 10:50:18
【问题描述】:

到目前为止,我使用 GMSAutocompleteResultsViewController 实现的地点自动完成功能运行良好。但是当我将 sdk 更新到 3.0.2 时停止工作。如果我恢复到版本 2.7.0 开始工作。

我已经通过migrationguide 没有得到我所缺少的东西。我检查了examples 没有观察到任何变化。有人会指出我正确的方向以使其再次工作吗?

class PlaceAutoCompleteController: BaseViewController {

    //MARK: - Property declaration
    private var resultsViewController = GMSAutocompleteResultsViewController()
    private lazy var searchController = UISearchController(searchResultsController: resultsViewController)
    private var viewModel: PlaceTypeAheadViewModel
    var storeSelectionDelegate: StoreSelectionDelegate?

    //MARK: - Life cycle
    init(withViewModel aviewModel: PlaceTypeAheadViewModel) {
        viewModel = aviewModel
        super.init()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        setupProperties()
    }
}

//MARK: - Property setup
extension PlaceAutoCompleteController {

    /// Setting up view default properties
    func setupProperties() {

        resultsViewController.view.backgroundColor = UIColor.white
        resultsViewController.tableCellBackgroundColor = .white
        resultsViewController.delegate = self

        // Specify the place data types to return.
//        let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
//            UInt(GMSPlaceField.placeID.rawValue))!
//        resultsViewController.placeFields = fields

        let filter      = GMSAutocompleteFilter()

        //suitable filter type
        filter.type     = .establishment
        filter.country  = viewModel.getCountryId()
        resultsViewController.autocompleteFilter = filter

        searchController.searchResultsUpdater = resultsViewController

        // Put the search bar in the navigation bar.
        searchController.searchBar.sizeToFit()
        searchController.searchBar.placeholder = "Search places"
        let searchBgView = UIView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 44))
        searchBgView.addSubview(searchController.searchBar)
        view.addSubview(searchBgView)

        // Prevent the navigation bar from being hidden when searching.
        searchController.hidesNavigationBarDuringPresentation = false

        // This makes the view area include the nav bar even though it is opaque.
        // Adjust the view placement down.
        extendedLayoutIncludesOpaqueBars = false
        edgesForExtendedLayout = []

    }
}

// Handle the user's selection.
extension PlaceAutoCompleteController: GMSAutocompleteResultsViewControllerDelegate {

    func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
                           didAutocompleteWith place: GMSPlace) {
        searchController.isActive = false
        AppManager.setPlace(withPlaceId: place.placeID ?? "" , name: place.name ?? "" , latitude: place.coordinate.latitude, longitude: place.coordinate.longitude)
        openStoreSelection()
    }

    func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
                           didFailAutocompleteWithError error: Error){
        // TODO: handle the error.
        print("Error: ", error.localizedDescription)
    }

    // Turn the network activity indicator on and off again.
    func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
        UIApplication.shared.isNetworkActivityIndicatorVisible = false
    }

    /// Open store selection screen with selected country
    func openStoreSelection() {
        navigateToStoreSelection()
    }
}



提前致谢。

【问题讨论】:

  • 它是否显示任何特定的错误消息?
  • @shivi_shub:没有。didRequestAutocompletePredictionsdidUpdateAutocompletePredictions 这些代表不是事件被调用。但我正在设置resultsViewController.delegate = self
  • 发布有问题的代码
  • @JaydeepVyas:我已经添加了代码。
  • @Alex 用更新的方法改变你的方法

标签: ios swift google-places-api googleplacesautocomplete


【解决方案1】:

在您的 Google Cloud 项目中:

  1. 确保您启用了“Places API”。旧的“Places SDK for iOS”不适用于 3.0.0 版本的 SDK。

  1. 使用“Places API”而不是“Places SDK for iOS”更新 API 密钥的 API 限制

  1. 为您的 Google Cloud 项目设置结算明细

【讨论】:

    【解决方案2】:

    从商务人士那里获得了访问权限,接受了隐私政策,但我在他们之前共享的凭据中找不到 appkey。 现在我开始使用 iOS 密钥(由 Google 服务自动创建),它与更新的 sdk 版本(即 3.0.3)完美配合

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2019-04-29
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      相关资源
      最近更新 更多