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

iOS应用如何加入谷歌地图分享列表以接收位置数据?

让你的iOS App出现在谷歌地图的分享打开列表里

嘿,这个需求我刚好折腾过!要让你的App出现在谷歌地图的分享选项里,核心是让iOS系统识别到你的App能处理地理位置类的内容。主要有两种实现方式,我给你一步步拆解:

1. 配置UTI支持(核心必做)

谷歌地图在分享位置时,会传递符合public.location这个UTI(统一类型标识符)的数据。你需要在App的Info.plist里声明支持这个类型,这样系统才会把你的App放进“打开方式”列表:

  • 用Xcode操作的话,直接打开项目的「Info」标签页,找到「Document Types」点击加号新增:
    • 「Name」随便填,比如“Location Handler”
    • 「Types」里添加public.location,还可以额外加上com.google.maps.place(谷歌自家的位置UTI,适配更精准)
  • 如果你习惯直接编辑Info.plist,就添加CFBundleDocumentTypes数组,对应填写上述字段即可。

2. 自定义URL Scheme(可选,方便直接传参)

如果想让谷歌地图直接通过URL唤起你的App并传递具体位置参数(比如经纬度),可以自定义一个URL Scheme:

  • 还是在「Info」标签页,找到「URL Types」点击加号新增:
    • 「Identifier」填你的App Bundle ID(比如com.yourteam.yourapp)
    • 「URL Schemes」填你的自定义scheme,比如myapp-location
  • 接下来,你需要在App里处理这个Scheme的跳转请求:
    在SceneDelegate(或AppDelegate,取决于你的项目架构)里添加处理逻辑:
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        guard let url = URLContexts.first?.url else { return }
        // 解析自定义Scheme里的位置参数
        if url.scheme == "myapp-location" {
            let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
            let lat = components?.queryItems?.first(where: { $0.name == "lat" })?.value
            let lon = components?.queryItems?.first(where: { $0.name == "lon" })?.value
            // 拿到经纬度后,跳转到你的App的位置处理页面就行
        }
    }
    

3. 处理系统传递的位置数据

当用户从谷歌地图选择用你的App打开位置时,系统会把位置数据传递过来,你可以通过NSUserActivity来接收:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    // 处理直接传递的位置数据
    if userActivity.activityType == "com.apple.corelocation.location" {
        guard let location = userActivity.userInfo?[CLActivityUserInfoKey.location] as? CLLocation else { return }
        let latitude = location.coordinate.latitude
        let longitude = location.coordinate.longitude
        // 在这里使用经纬度做后续逻辑
    }
    // 也可以处理谷歌地图的Web链接(用户复制链接后打开的情况)
    else if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        guard let url = userActivity.webpageURL else { return }
        // 解析谷歌地图URL里的位置参数,比如提取?q=lat,lon里的经纬度
    }
}

测试小技巧

配置完后,重新编译安装App到测试设备:

  • 打开谷歌地图,选一个位置点击分享按钮
  • 在弹出的列表里找你的App,如果没看到,下拉点「更多」,把你的App开关打开就行
  • 点击你的App,检查是否能正确获取并解析位置数据

额外提醒

  • 优先用Universal Links替代自定义Scheme(避免Scheme冲突,而且不会出现弹窗询问),配置方式类似,只是需要在你的域名下配置apple-app-site-association文件
  • 确保你的App有位置访问权限(如果需要在App内显示位置的话)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:37