跳转到主要内容
根据用户所在位置向其发送消息。OneSignal 可以按国家、GPS 坐标或自定义标签对用户进行细分,让您基于物理位置创建及时、相关的外联。 当用户与您的应用交互且位置跟踪已启用时,他们的坐标会定期更新(应用使用期间大约每 5 分钟一次),可以通过旅程或任何消息创建工具用来发送消息。
OneSignal 默认不跟踪 GPS 位置。 SDK 仅在满足以下三个条件时才收集经纬度:
  1. 您的应用具有正确的位置权限和依赖项。
  2. 您的应用明确启用与 OneSignal 的共享。没有此设置,您的应用可能会收集位置数据,但不会与 OneSignal 共享。
  3. 用户在系统提示中授予位置权限。
请参阅位置跟踪设置进行配置。有关 SDK 位置行为的背景信息,请参阅 You’re in Control: How Location Actually Works in OneSignal’s SDK

按国家定向

国家根据设备的 IP 地址确定,每次用户打开您的应用时自动更新。值使用 ISO 3166-1 Alpha-2 两位字母国家代码(例如,USGBCA)。 使用细分中的 country 字段或创建细分 APIfilters 参数按国家定向:
"filters": [
  { "field": "country", "relation": "=", "value": "US" }
]

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

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

位置跟踪设置

位置跟踪在您的移动应用代码中配置,而不是在 OneSignal 控制台中配置。您的应用至少需要:
  • 为 iOS 和 Android 添加原生位置权限和依赖项。
  • 启用 Location.isShared 标志以与 OneSignal 共享坐标。
  • 请求系统位置权限,或使用应用内消息作为软预提示以获得更高的选择率。

移动 SDK 位置参考

iOS、Android、React Native、Flutter、Unity 和 Cordova/Ionic 的完整设置和各平台代码。
启用位置跟踪后,您可以使用 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"
});
一旦设置了标签,通过组合标签范围过滤器创建地理围栏细分。例如,要定向边界框 37° ≤ lat < 38°-118° ≤ long < -117° 内的用户,在细分构建器中添加以下四个过滤器:
  • 标签 lat 大于 37
  • 标签 lat 小于 38
  • 标签 long 大于 -118
  • 标签 long 小于 -117

按城市或自定义位置定向

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

常见问题

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

不能原生实现。OneSignal 的 Web SDK 不收集 GPS 坐标。要在网页推送中使用基于位置的细分,请自行从浏览器的 Geolocation API 收集坐标并将其作为标签发送到 OneSignal,然后在这些标签上构建范围过滤器细分。请参阅网页推送经纬度跟踪

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

验证所有三个设置条件是否满足:您的应用已安装正确的位置权限和依赖项,Location.isShared 已设置为 true,且用户已在系统提示中授予位置权限。有关各平台设置和常见修复(包括 Android play-services-location 依赖项)的详情,请参阅移动 SDK 位置参考

SDK 多久更新一次位置?

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

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

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

相关页面

位置选择提示

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

细分

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