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

如何用Swift编程创建直接打开谷歌地图的Siri快捷方式?

直接通过Siri快捷方式打开谷歌地图的解决方案

你当前的实现会先唤起自身App再跳转谷歌地图,核心问题在于用了NSUserActivity——这类快捷方式本质是先触发你的App,再由App中转跳转。要实现直接打开谷歌地图,得换用INOpenMapsIntent构建快捷方式,绕开自身App的中转环节。

一、替换快捷方式创建代码

直接基于地图意图构建快捷方式,让Siri执行时直接唤起谷歌地图(前提是设备已安装):

import Intents

// 创建打开地图的意图
let openMapsIntent = INOpenMapsIntent()
// 可选:设置目的地坐标,留空则直接打开谷歌地图首页
openMapsIntent.destination = INPlacemark(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 39.9042, longitude: 116.4074))) // 示例:北京坐标
openMapsIntent.transportType = .automobile // 可选设置出行方式,比如驾车、步行

// 构建快捷方式
let shortcut = INShortcut(intent: openMapsIntent)
let addShortcutButton = INUIAddVoiceShortcutButton(style: .whiteOutline)
addShortcutButton.shortcut = shortcut
addShortcutButton.suggestedInvocationPhrase = "打开谷歌地图" // 设置语音唤起的短语
addShortcutButton.delegate = self
view.addSubview(addShortcutButton)

二、删除AppDelegate中的中转逻辑

现在快捷方式直接触发谷歌地图,不需要你的App再做中转,删掉application(_:continue:restorationHandler:)里对应comgooglemaps的处理代码即可。

三、配置Info.plist必要项

确保App已配置以下权限,避免功能异常:

  • 若需要设置目的地坐标,添加NSLocationWhenInUseUsageDescription,填写位置权限申请说明
  • 在LSApplicationQueriesSchemes数组中添加comgooglemaps,确保App能检测谷歌地图是否安装

补充说明

  • 这个方案依赖系统的INOpenMapsIntent,会自动调用用户设置的默认地图App,如果要强制打开谷歌地图,需要用户先把谷歌地图设为默认地图App;
  • 可以在创建快捷方式前先检测谷歌地图是否安装,代码示例:
let googleMapsURL = URL(string: "comgooglemaps://")!
if UIApplication.shared.canOpenURL(googleMapsURL) {
    // 已安装,创建快捷方式
} else {
    // 未安装,提示用户下载
}

内容的提问来源于stack exchange,提问作者Roei Nadam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:20:16