You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android/iOS的Places SDK中实现基于会话的Google Places Autocomplete

基于会话的Autocomplete在Android/iOS Places SDK中的实现方案

当然可以在Android和iOS的Places SDK中实现基于会话的Autocomplete功能,这正是Google Maps 6月11日生效的新定价规则里主推的成本优化方式——把用户一次完整搜索过程中的多次按键请求合并为一个会话计费,相比按单次按键请求计费能帮你更合理地控制支出。

什么是Autocomplete会话?

简单来说,一个会话就是用户从开始输入地点查询到选择结果/主动取消搜索的整个交互过程。在这个过程中,用户每输入一个字符触发的Autocomplete请求,只要绑定同一个会话token,就会被合并成一次会话计费。

Android端实现步骤

如果你用的是自定义搜索UI,需要手动管理会话token:

  1. 初始化Places客户端,创建专属的会话token
  2. 每次发起Autocomplete请求时携带这个token
  3. 会话结束(用户选结果/关闭搜索)后丢弃token,新搜索生成新token

代码示例(Kotlin):

// 初始化Places客户端
val placesClient = Places.createClient(context)

// 为当前搜索会话生成新token
val sessionToken = AutocompleteSessionToken.newInstance()

// 构建Autocomplete请求并绑定token
val request = FindAutocompletePredictionsRequest.builder()
    .setSessionToken(sessionToken)
    .setQuery("用户输入的实时内容")
    .setCountry("CN") // 可选:设置搜索国家范围
    .build()

// 发起请求并处理结果
placesClient.findAutocompletePredictions(request).addOnSuccessListener { response ->
    // 展示预测结果列表
    response.autocompletePredictions.forEach { prediction ->
        println("预测结果:${prediction.getPrimaryText(null)}")
    }
}.addOnFailureListener { exception ->
    // 处理请求错误
    exception.printStackTrace()
}

如果使用官方的AutocompleteSupportFragment UI组件,不需要手动处理token——组件会自动为每个搜索会话生成、管理token,默认就按会话计费,直接集成即可。

iOS端实现步骤

和Android逻辑一致,自定义UI需要手动管理token:

  1. 初始化GMSPlacesClient,创建GMSAutocompleteSessionToken
  2. 发起Autocomplete查询时传入该token
  3. 会话结束后销毁token,新搜索生成新token

代码示例(Swift):

// 初始化Places客户端
let placesClient = GMSPlacesClient.shared()

// 为当前搜索会话生成新token
let sessionToken = GMSAutocompleteSessionToken()

// 设置搜索过滤条件(可选)
let filter = GMSAutocompleteFilter()
filter.country = "CN"

// 发起带会话token的查询
placesClient.autocompleteQuery("用户输入的实时内容", 
                               bounds: nil, 
                               filter: filter, 
                               sessionToken: sessionToken) { results, error in
    guard let results = results else {
        print("请求错误:\(error?.localizedDescription ?? "未知错误")")
        return
    }
    // 遍历并展示预测结果
    for result in results {
        print("预测结果:\(result.attributedFullText.string)")
    }
}

如果使用官方的GMSAutocompleteViewController,同样无需手动处理token,组件默认已实现会话计费逻辑,直接使用即可。

关键注意事项

  • 同一个会话的所有请求必须使用同一个token,否则会被判定为多个单独请求计费
  • 每个新的搜索会话都要生成新的token,不要重复使用旧token
  • 官方UI组件已经封装了会话管理,优先使用组件能减少手动实现的出错概率

新定价规则说明

6月11日生效的Google Maps新定价规则中,Autocomplete提供两种计费模式:

  1. 按键请求计费:用户每输入一个字符触发的请求单独计费
  2. 会话计费:将用户一次完整搜索过程中的所有请求合并为一个会话计费,成本更可控

内容的提问来源于stack exchange,提问作者Romina Liuzzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:28:53