Swift代码无法唤起已安装的谷歌地图(iPhone7真机)求助
解决iPhone上无法通过Swift打开谷歌地图的问题
嘿,我之前碰到过完全一样的问题!iOS 9之后苹果新增了安全限制,直接用canOpenURL检测自定义URL Scheme会被拦截,除非你先在Info.plist里声明要查询的Scheme——这就是明明装了谷歌地图,却还是打印"Can't use comgooglemaps://"的核心原因。
第一步:配置Info.plist开启Scheme查询权限
你需要在项目的Info.plist文件里添加LSApplicationQueriesSchemes数组,把谷歌地图的Scheme加入白名单:
- 打开项目里的
Info.plist,右键选择「Open As」→「Source Code」(或者直接在属性列表编辑器里操作) - 如果用源码编辑,添加以下内容:
<key>LSApplicationQueriesSchemes</key> <array> <string>comgooglemaps</string> </array>
如果用可视化编辑器,点击加号新增键,输入LSApplicationQueriesSchemes,类型选择Array,再在数组里添加一个String项,值填comgooglemaps即可。
第二步:修正URL中的转义字符
你代码里用了&(HTML转义字符),但在Swift代码里应该直接用&,否则构造出的URL会无效。同时建议用可选绑定避免强制解包的崩溃风险,修正后的代码如下:
if let googleMapsURL = URL(string: "comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic") { if UIApplication.shared.canOpenURL(googleMapsURL) { UIApplication.shared.open(googleMapsURL, options: [:], completionHandler: nil) } else { print("Can't use comgooglemaps://") } } else { print("Invalid Google Maps URL") }
额外检查点
- 确认iPhone上的谷歌地图是最新版本,旧版本可能对部分URL参数支持不佳
- 核对Scheme拼写:谷歌地图的官方Scheme就是
comgooglemaps,别写错字母
调整完这两步,应该就能正常唤起谷歌地图了!
内容的提问来源于stack exchange,提问作者Eric Chong
相关产品推荐
相关产品推荐

