
物联网移动开发后端【免费下载链接】physical-webThe Physical Web: walk up and use anything项目地址https://gitcode.com/gh_mirrors/ph/physical-web点击查看免费下载本文基于 physical-web 仓库根目录下的 implementation-status.md 编写梳理 Physical Web物理网页在不同扫描客户端上的落地情况Chrome for iOS / Android 支持的功能矩阵、Opera Labs 版的功能发布以及官方 Physical Web AppiOS / Android的下载入口。文章在保留原文档全部信息的基础上结合仓库中 Android App 与 Java Collection 库的源码对“Eddystone-URL 扫描、通知、Favicon、HTTPS-only”等核心能力做源码级验证帮助你理解不同客户端能力差异背后的实现原理。一、什么是“实现状态”追踪文档Physical Web 是一个将 URL 广播到物理世界的开放标准智能物体售货机、海报、玩具、公交站、租车点通过 BLE 等通道广播 URL任何邻近设备无需安装对应 App 即可“walk up and use”。由于存在多个独立实现的扫描客户端浏览器、独立 App、实验室构建它们对 Physical Web 能力的支持进度并不一致。implementation-status.md正是用于逐项记录这些客户端的能力差异作为社区追踪进度的单一事实来源。文档同时建议如果你发现某客户端的实现缺失或存在 bug可以通过 GitHub Issue 或邮件组 physical-web-discussgooglegroups.com 反馈。二、Chrome 客户端功能矩阵原文档以表格形式给出了 Chrome 在两个移动平台上的能力对照这是整篇文档的核心内容逐项完整保留如下功能特性iOSAndroidEddystone-URL 扫描✓✓通知Notifications✓Favicon 支持✓HTTPS only✓这张表告诉我们Chrome for iOS 与 Chrome for Android 都已支持Eddystone-URL 广播的扫描但在外围能力上Android 版走得更远——它额外实现了通知扫描到信标时向用户推送、Favicon站点图标支持以及HTTPS-only只接受 HTTPS 链接三项能力iOS 版当时均未提供。2.1 Notes 说明原文档对两个平台的实现各给出了一篇官方博客作为佐证此处仅保留文字描述不附外部链接iOSChrome for iOS 上探索 Physical Web 的博客文章发布于 2015 年 7 月AndroidPhysical Web 扩展至 Chrome for Android 的博客文章发布于 2016 年 2 月。两篇博客恰好反映了时间线上的先后顺序Physical Web 先进入 Chrome for iOS半年后进入 Chrome for Android而 Android 随后补上了通知、Favicon、HTTPS-only 等增强能力。三、Opera 客户端Opera 的 Physical Web 支持在Labs release实验室版中实现属于实验性质的功能发布。这是浏览器阵营中的第二个实现方验证了 Physical Web 作为开放标准可以被多家浏览器厂商独立采用。四、官方 Physical Web Apps除浏览器外Google 还提供了独立的 Physical Web 扫描应用供 iOS 和 Android 用户在浏览器支持落地前体验完整能力iOS 版可从 App Store 下载应用名 “Physical Web”Android 版可从 Google Play 下载包名physical_web.org.physicalweb。值得一提的是Android 版应用正是当前仓库 android 目录下的开源工程其包名与 Play 上架包名一致可以直接基于 android/PhysicalWeb/app/src/main/AndroidManifest.xml 构建体验。五、源码级验证Chrome 能力矩阵背后的实现原理上述表格中列出的每一项能力都能在当前仓库中找到对应的实现或数据结构佐证。下面逐一展开。5.1 Eddystone-URL 扫描URL 编码与解码Eddystone-URL 是 Physical Web 最主要的 BLE 广播格式。其核心特征是紧凑编码为了把 URL 塞进 20 字节左右的广播帧协议定义了精简的 scheme 前缀和域名后缀编码表。Java Collection 库中的 EddystoneBeacon.java 完整复现了这一编码表URI scheme 表URI_SCHEMES代码 0~40→http://www.1→https://www.2→http://3→https://4→urn:uuid:用于广播 URN/UUIDURL 后缀表URL_CODES代码 0~130~6→.com/.org/.edu/.net/.info/.biz/.gov/7~13→ 无斜杠版本的.com.org.edu.net.info.biz.govdecode()与decodeUrl()方法在扫描端完成逆过程广播帧第 2 字节是 scheme 索引其后每字节要么映射为上述后缀、要么作为普通字符直接追加。例如测试用例 EddystoneBeaconTest.java 验证了{0x10, 0x00, 0x01}会被解码为https://www.。5.2 扫描端的 Service UUID 过滤Android App 的 BLE 扫描器 BleUrlDeviceDiscoverer.java 只关心两类服务 UUIDUriBeacon 服务0000FED8-0000-1000-8000-00805F9B34FBEddystone URL 服务0000FEAA-0000-1000-8000-00805F9B34FBleScanMatches()通过ScanRecord.getServiceUuids()对广播帧做预过滤命中任一 UUID 后才进入onLeScan()解析 URL 与 RSSI再经由 UrlDeviceDiscoverer.java 基类统一上报给发现服务。这一机制正是 Chrome 中“Eddystone-URL 扫描”能力的通用技术基础。5.3 Notifications发现即推送Chrome for Android 独有的“通知”能力在独立 App 中的完整实现是 UrlDeviceDiscoveryService.java。该服务的行为注释清晰描述了通知工作流L97-L101开始扫描删除旧通知展示排名前两位的 URL首次超时mFirstScanTimeout2 秒新 URL 若进入前两名则逐个推送通知若无客户端订阅则停止扫描mSecondScanTimeout10 秒。当发现超过两个信标时服务会生成一个汇总通知使用 notification_big_view.xml 的自定义 RemoteViews 展开显示前两个信标的图标、标题、URL 与描述点击即跳转对应网页。通知样式区分了 Lollipop5.0与旧版本以保证锁屏可见性VISIBILITY_PUBLIC与可读性。5.4 Favicon 支持来自 PWS 元数据Favicon站点图标能力依赖 Physical Web ServicePWS的元数据解析。在 PwsClient.java 中无论 API v1 还是 v2解析响应时都会读取icon字段v1 位于顶层v2 位于pageInfo对象内并通过fetchIcon等方法下载图标。App 侧随后用该图标作为通知的setLargeIcon见 UrlDeviceDiscoveryService.java这就是用户在通知和列表页看到的站点图标。5.5 HTTPS only公共网络约束的端侧佐证“HTTPS only”本质上是 Physical Web 生态对公开广播的安全约束保证公共空间广播的 URL 不被中间人篡改。虽然该约束主要由 PWS 服务端与 Chrome 策略层实施但仓库中可见其配套机制Android App 将 PWS 生产端点固定为 HTTPSUtils.java 中的PROD_ENDPOINT等且通知内容点击一律通过Uri.parse(...)构造网页 Intent 打开。此外Utils.isPublic(urlDevice)Utils.java依据设备额外数据中的public标记默认 true决定是否以VISIBILITY_PUBLIC展示锁屏通知——这也是“公共设备”语义在端侧的落地体现。六、能力差异与生态演进小结综合原文档与仓库源码可以得出如下结论扫描能力是共性基础Chrome 双平台、Opera Labs 与官方 App 都具备 Eddystone-URL 扫描这依赖统一的 URL 紧凑编码标准scheme 表 后缀表仓库中 EddystoneBeacon.java 即为其权威参考实现通知 / Favicon / HTTPS-only 是增强能力由 Android 侧先行落地iOS 与 Opera 当时尚未跟进——表格中的空白格即为未来实现方向生态呈多客户端形态浏览器内建Chrome、Opera与独立 App官方双端应用并行发展仓库的 android、ios、nodejs 目录正是官方各端开源实现。如果你正在开发自己的 Physical Web 扫描客户端可将本表作为“能力对照清单”逐项比对自己的实现进度仓库中的 implementation-status.md 与 README.md 则分别提供了进度追踪入口和整体技术背景。赞分享物联网移动开发后端【免费下载链接】physical-webThe Physical Web: walk up and use anything项目地址https://gitcode.com/gh_mirrors/ph/physical-web点击查看免费下载相关推荐DeepChat 浏览器 Profile 导入macOS Chrome Cookie 会话同步的实现追踪与源码解析DeepChat 浏览器 Profile 导入macOS Chrome Cookie 会话同步的实现追踪与源码解析 DeepChat 的 YoBrowserAI Agent人工智能AI 应用桌面应用MCP ClientsPhysical Web 技术总览从 BLE 广播到客户端、服务端与安全的完整解析Physical Web 技术总览从 BLE 广播到客户端、服务端与安全的完整解析 导读 本文基于仓库中的 technical_overview.md htt物联网移动开发后端Apache Pulsar 客户端库全景指南官方客户端、特性矩阵与多语言生态实践Apache Pulsar 客户端库全景指南官方客户端、特性矩阵与多语言生态实践 本文以 Apache Pulsar 官方文档《Pulsar client l消息队列后端流处理上一篇从 pjax 到 htmxChris Wanstrath 访谈中的超媒体思想传承下一篇如何高效实施AGV通信协议VDA5050专业集成方案完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考