地点自动补全功能使用会话令牌将用户自动补全搜索的查询和选择阶段划分到独立的会话中,以便进行结算。会话在用户开始输入查询时开始,并在用户选择地点并调用“地点详情”时结束。每个会话可以有多个自动补全查询,后跟一个地点选择。会话中的每个请求使用的 API 密钥必须属于同一个 Google Cloud 控制台项目。会话结束后,令牌将失效;您的应用必须为每个会话生成一个新的令牌。如果省略 sessiontoken
参数,或者重复使用会话令牌,系统将按照未提供会话令牌的情况对会话收费(每个请求均单独计费)。
我们建议您遵循以下准则:
- 为所有自动补全会话使用会话令牌。
- 为每个会话生成一个新的令牌。
- 确保用于一个会话中的所有“地点自动补全”请求和“地点详情”请求的 API 密钥都属于同一个 Google Cloud 控制台项目。
- 请务必为每个新会话传递唯一的会话令牌。针对多个会话使用同一令牌会导致每个请求被单独计费。
您可以选择在请求中省略自动补全会话令牌。如果省略会话令牌,每个请求都将单独结算,从而触发自动补全 - 按请求结算 SKU。如果您重复使用某个会话令牌,相应会话会被视为无效,并且系统会按未提供会话令牌的情况为请求计费。
示例
当用户输入查询时,每隔几个按键(而不是每个字符)就会调用一次“自动补全”请求,并返回可能的结果列表。当用户从结果列表中进行选择时,相应选择会计为一个请求,并且搜索期间发出的所有请求会捆绑并计为一个请求。如果用户选择某个地点,搜索查询是免费的,并且只需向地点数据请求付费。如果用户在会话开始后的几分钟内未做出选择,则系统只会对搜索查询收费。
让我们从应用的角度来分析这种事件流。
- 一位用户开始输入查询来搜索“法国巴黎”。
- 在检测到用户输入时,应用会创建新的会话令牌,即“令牌 A”。
- 在用户输入内容时,该 API 每隔几个字符就会发出一次自动补全请求,并显示与每个字词对应的潜在结果的新列表:
"P"
"Par"
"Paris,"
"Paris, Fr"
- 当用户做出选择后:
- 该查询产生的所有请求都会分组并添加到由“令牌 A”表示的会话中,作为单个请求。
- 系统会将用户的选择计为“地点详情”请求,并将其添加到由“令牌 A”表示的会话中。
- 会话结束,并且应用舍弃“令牌 A”。
如需详细了解“自动补全”请求的结算方式,请参阅使用量和结算。
创建会话令牌
如需创建会话令牌,请调用 GMSAutocompleteSessionToken.init()
。