十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

在地图上看到好友:Messenger + Mapbox实现iOS好友位置共享完整教程(含隐私模式)

在地图上看到好友:Messenger + Mapbox实现iOS好友位置共享完整教程(含隐私模式) 在地图上看到好友Messenger Mapbox实现iOS好友位置共享完整教程含隐私模式【免费下载链接】MessengeriOS - Real-time messaging app 项目地址: https://gitcode.com/gh_mirrors/messe/MessengerMessenger内部项目名 mChat是一款基于 Swift 的 iOS 实时即时通讯 App除了聊天、好友申请和共享媒体外它还内置了一个很实用的功能——在 Mapbox 地图上实时看到好友的位置。只要好友没有开启「Incognito 隐私模式」他们的头像标记就会出现在你的地图上并且位置每 20 秒自动刷新一次。本教程带你完整跑通这一 iOS 好友位置共享功能并讲清楚隐私模式的开关逻辑。一、功能全貌地图页能做什么打开底部 Tab 栏的地图入口你会看到一个全屏的 Mapbox 地图MGLMapView其中包含你自己的位置一个蓝色定位点点击后弹出个人信息卡片显示当前匿名模式状态好友的位置标记每个开放位置共享的好友都会显示为头像图钉副标题实时显示「Online」或「最后上线时间」一键跳转聊天点击好友图钉后底部会弹出一张信息卡直接点进去就能开始私聊⚙️地图设置右上角齿轮按钮可切换 6 种地图样式、开关隐私模式二、技术架构实时位置共享是怎么实现的整个位置共享功能由三个模块协作完成理解它们的关系是读懂源码的关键模块文件路径职责地图主界面Messenger/mChat/Controllers/Maps/MapsVC.swift展示全屏地图、管理定位权限、渲染好友标记实时订阅Messenger/mChat/Controllers/Maps/MapsNetworking.swift监听 Firebase 中好友位置变化动态增删图钉位置上报Messenger/mChat/Networking/ChatKit.swift每 20 秒把「我」的经纬度写入 Firebase 的user-Location节点数据流非常简洁你的 App 每隔 20 秒向 Firebase 写入一次经纬度好友端订阅同一个节点数据一变就收到推送然后更新地图上的图钉位置。整个过程无需轮询天然实时。三、运行项目配置 Mapbox 令牌完整步骤想让地图真正渲染出来只需完成两步配置注册 Mapbox 账号前往 Mapbox 官网创建一个 Access Token免费额度即可用于开发调试写入 Info.plist在项目的Messenger/mChat/Info.plist中新增一个名为MGLMapboxAccessToken的 Key把 Token 粘贴为 Value 完整运行指南见项目根目录的README.md其中还列出了 Firebase 配置等前置步骤。配置完成后用 Xcode 打开Messenger/mChat.xcodeprojPodfile 会自动拉取 Mapbox、Firebase 等依赖直接运行即可。![Mapbox Light Style地图样式预览iOS好友位置共享中的浅色地图效果](https://raw.gitcode.com/gh_mirrors/messe/Messenger/raw/64fb47f1f4ded5fb591352b332acee72ea6a94a8/Messenger/mChat/Assets/Assets.xcassets/MapStyles/Light Style.imageset/LightStyle3x.jpg?utm_sourcegitcode_repo_files)四、隐私模式Incognito位置共享的安全开关很多人最关心的就是隐私问题。Messenger 的设计是位置共享默认关闭——用户注册时isMapLocationEnabled字段初始值就是false见Messenger/mChat/Controllers/Auth Controllers /Auth Helpers/AuthNetworking.swift。打开地图设置页Messenger/mChat/Controllers/Maps/MapsSettings/MapsSettingsVC.swift顶部有一行灰色说明文字If Incognito mode is turned on, your location wont be visible on the map to your friends.操作逻辑一目了然Incognito 开启→ 不向 Firebase 写入位置好友地图上看不到你Incognito 关闭→ 启动 20 秒定时器上报位置你的标记才会出现在好友地图上开关状态会实时同步到云端users节点好友端拉取到该字段变化后会自动把对应图钉从地图上移除或保留不需要互相打招呼。五、进阶玩法6 种 Mapbox 地图样式一键切换地图页右上角的齿轮按钮进入设置后可以选择你偏好的地图皮肤。样式定义在Messenger/mChat/Controllers/Maps/MapsSettings/MapStylesCell.swift中共 6 种样式名称Mapbox StyleStreets Stylestreets-v11Light Stylelight-v10Dark Styledark-v10Satellite Stylesatellite-v9Satellite Light Stylenavigation-preview-day-v4Satellite Dark Stylenavigation-preview-night-v4选择后立即生效偏好会保存到本地 CoreDataselectedMapUrl字段下次启动自动沿用。![Mapbox Satellite卫星地图样式预览Messenger好友位置共享夜间卫星视图](https://raw.gitcode.com/gh_mirrors/messe/Messenger/raw/64fb47f1f4ded5fb591352b332acee72ea6a94a8/Messenger/mChat/Assets/Assets.xcassets/MapStyles/Satellite Dark Style.imageset/Satellite_Dark3x.jpg?utm_sourcegitcode_repo_files)六、总结这个实现值得学习的 3 个点实时性设计用 Firebase 实时数据库 observe(.value)订阅代替轮询代码少且延迟低参考 MapsNetworking.swift 中的observeFriendLocation方法隐私优先默认关闭共享、开关与上报解耦是位置类功能的标准姿势体验闭环地图 → 好友图钉 → 聊天页的跳转路径只有两步位置信息直接转化为社交动作如果你正在做自己的 iOS 社交 App这套「Mapbox Firebase 隐私开关」的组合可以直接借鉴。打开Messenger/mChat/Controllers/Maps/目录所有相关源码都在里面欢迎深入研读 【免费下载链接】MessengeriOS - Real-time messaging app 项目地址: https://gitcode.com/gh_mirrors/messe/Messenger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表