跳转到主要内容
基于位置的细分让您根据用户所在位置发送消息。OneSignal 可以按国家、GPS 坐标或自定义标签对用户进行细分——让您基于物理位置创建及时、相关的外联。 当用户与您的应用交互且位置跟踪已启用时,他们的坐标会近乎实时地更新,可以通过旅程或任何消息创建工具用来发送消息。
OneSignal 默认不跟踪 GPS 位置。SDK 不会收集经纬度,除非您的应用 (1) 具有正确的权限和依赖项,(2) 明确启用与 OneSignal 的共享,以及 (3) 用户授予位置权限。请参阅下方的位置跟踪设置以及我们的博客文章 You’re in Control: How Location Actually Works in OneSignal’s SDK 了解更多详情。

按国家定向

国家根据设备的 IP 地址确定,每次用户打开您的应用时自动更新。 细分或 API filters 参数中使用 country 数据过滤器。

按位置定向(经度、纬度和半径)

如果您的移动应用收集 GPS 位置并与 OneSignal 共享,SDK 大约每 5 分钟更新一次用户的坐标(基于权限和系统规则)。如果应用被强制停止,在用户再次打开之前无法跟踪位置。

位置跟踪设置

跟踪位置需要三个步骤:
1

向您的应用添加位置权限和依赖项

配置应用的原生位置权限并包含所需的依赖项。
如果您看到错误 LocationManager.startGetLocation: not possible, no location dependency found,说明您的应用缺少所需的位置依赖项。Android 的常见修复方法是在 app/build.gradle 中添加 Google Play Services 位置库:
implementation 'com.google.android.gms:play-services-location:21.0.1'
2

启用与 OneSignal 的位置共享

调用 Location.setShared(true) 以允许 SDK 将设备坐标发送到 OneSignal。没有此设置,您的应用将不会向 OneSignal 发送位置数据。
OneSignal.Location.setShared(true);
有关所有平台示例,请参阅移动 SDK 参考
3

向用户请求位置权限

使用 Location.requestPermission() 触发系统位置权限提示,或使用应用内消息作为软预提示以获得更高的选择率。
OneSignal.Location.requestPermission();
有关所有平台示例,请参阅移动 SDK 参考
启用位置跟踪后,您可以:
  • 使用 location 过滤器创建细分(半径定向)。
  • 使用创建消息 API 触发消息。
OneSignal segment builder showing the location radius filter with latitude, longitude, and radius fields

网页推送经纬度跟踪

OneSignal 不收集网页的经纬度数据。但是,您可以使用标签从您的网页应用设置位置,或使用更新用户 API 从您的服务器设置位置。 打标签示例:
  1. 使用浏览器的 Geolocation API 在您的网页应用中请求位置访问。
  2. 使用 JavaScript 检测用户的坐标。
  3. 使用标签将这些坐标发送到 OneSignal。
OneSignal.User.addTags({
  lat: "37.160",
  long: "-117.773"
});
一旦设置了标签,使用范围过滤器创建地理围栏细分: 示例细分:标签 "lat" > 37 AND "lat" < 38 AND "long" > -118 AND "long" < -117

按城市或自定义位置定向

OneSignal 不会原生检测城市或区号。要按城市或自定义位置定向:
  • 让用户在表单中输入城市或地区。
  • 或使用 JavaScript 与反向地理编码(如 Google Maps API)从坐标推断城市。
  • 将城市名称作为数据标签发送。
OneSignal.User.addTag("city", "San Francisco");

使用 Radar 进行地理围栏

OneSignal 通过 Radar(一个领先的地理位置平台)支持高级地理围栏。使用 Radar 的 SDK 和 API,您可以:
  • 在用户进入或退出定义区域时触发通知。
  • 跟踪配送和取货活动。
  • 验证在位置的存在。
  • 支持商店定位器、基于位置的优惠等。
要开始使用,请访问 Radar 集成文档联系 Radar 获取入门支持。

常见问题

位置跟踪在网页上有效吗?

OneSignal 不从网页浏览器收集 GPS 坐标。要在网页推送中使用基于位置的细分,请从浏览器的 Geolocation API 收集坐标并将其存储为标签。请参阅上方的网页推送经纬度跟踪

为什么我的应用没有跟踪位置?

验证所有三个设置步骤是否已完成:位置权限和依赖项已添加到您的应用,Location.setShared(true) 已调用,且用户已授予位置权限。如果您看到 LocationManager.startGetLocation: not possible, no location dependency found,请将 play-services-location 依赖项添加到您的 app/build.gradle。有关详情,请参阅位置跟踪设置

SDK 多久更新一次位置?

启用位置跟踪后,SDK 在应用使用期间大约每 5 分钟更新一次坐标。如果应用被强制停止,位置更新将暂停,直到用户再次打开应用。

我可以按城市定向用户吗?

不能原生实现。OneSignal 跟踪国家(通过 IP 地址)和 GPS 坐标(通过 SDK),但不跟踪城市或区号。您可以使用反向地理编码服务从坐标推断城市并将其存储为标签。请参阅按城市或自定义位置定向

相关页面

移动 SDK 位置参考

setShared()、requestPermission() 和位置事件监听器的完整 API 参考。

位置选择提示

在请求原生位置权限之前,使用应用内消息作为软预提示。

细分

使用位置过滤器、标签和用户属性创建受众细分。

Radar 集成

通过 Radar 实现高级地理围栏、行程跟踪和位置验证。