设置和调试
这些方法是将 OneSignal SDK 集成到您的应用程序中的参考。有关完整的特定平台设置说明,请参阅移动 SDK 设置。initialize()
初始化 OneSignal SDK。这应该在应用程序启动期间调用。ONESIGNAL_APP_ID
可以在密钥和 ID 中找到。
如果您想延迟 OneSignal SDK 的初始化,我们建议使用我们的隐私方法。
setLogLevel()
设置日志记录以向 Android LogCat 或 Xcode 日志打印额外日志。
在初始化 OneSignal 之前调用此方法。有关更多详情,请参阅获取调试日志。
setAlertLevel()
设置日志级别以在您的应用中显示为警报对话框。确保在提交到应用商店之前移除此设置。
用户身份和属性
当用户打开您的应用时,OneSignal 自动创建一个 OneSignal ID(用户级别)和一个订阅 ID(设备级别)。您可以通过使用您的唯一用户标识符调用login()
将多个订阅(如设备、电子邮件、电话号码)与单个用户关联。
login(external_id)
将用户上下文设置为提供的 external_id
。确保与此 external_id
相关联的所有订阅和属性在单个 onesignal_id
下统一。有关更多详情,请参阅用户。
关键行为:
- 如果
external_id
已存在,SDK 将切换到该用户。登录前收集的匿名数据不会合并,将被丢弃。 - 如果
external_id
不存在,本地状态将保存在当前onesignal_id
下。用户匿名时收集的任何数据将被保留。 - SDK 在网络故障或服务器错误时自动重试。
每次用户打开应用时调用此方法,以确保设置外部 ID 并将订阅链接到用户。
logout()
将当前用户与订阅取消链接。
- 从当前推送订阅中移除
external_id
。 - 将 OneSignal ID 重置为新的匿名用户。
- 任何新数据(如标签、订阅、会话数据等)现在将设置在新的匿名用户上,直到通过
login
方法识别他们。
当用户退出您的应用且您希望将订阅设置为新的匿名用户时使用此方法。
getOnesignalId()
Retrieve the current OneSignal ID. May be null
if called before user state is initialized. Instead, use User State addObserver()
to listen for user state changes.
getExternalId()
Retrieve the current External ID. May be null
if not set or called before user state is initialized. Instead, use User State addObserver()
to listen for user state changes.
addObserver()
user state
监听用户上下文的变化(如登录、注销、ID 分配)。
addAlias()
, addAliases()
, removeAlias()
, removeAliases()
别名是替代标识符(如用户名或 CRM ID)。
- 在添加别名之前使用
login()
设置external_id
。添加到没有external_id
的订阅的别名不会在多个订阅间同步。 - 详情请参阅别名。
setLanguage()
覆盖用户的自动检测语言。使用 ISO 639-1 语言代码。
自定义事件
Trigger Journeys and Wait Until step activation via a custom event.自定义事件仍处于测试阶段,需要以下版本的 SDK 才能从您的应用触发:
- iOS native SDK, available starting
5.4.0-alpha-01
- Android native SDK, available starting
5.3.0-alpha-01
name
- 必需。 事件名称作为字符串。properties
- 可选。 要添加到事件的键值对。属性字典或映射必须可序列化为有效的 JSON 对象。
os_sdk
下,以供使用。例如,要按设备类型定向事件,您将访问 os_data.device_type
。
json
trackEvent()
数据标签
标签是您基于事件或用户属性在用户上设置的自定义key : value
字符串数据对。有关更多详情,请参阅数据标签。
addTag()
, addTags()
在当前用户上设置单个或多个标签。
- 如果键已存在,值将被替换。
- 超过您计划的标签限制将导致操作静默失败。
removeTag()
, removeTags()
从当前用户删除单个或多个标签。
getTags()
返回用户标签的本地副本。标签在 login()
或新应用会话期间从服务器更新。
隐私
setConsentRequired()
在数据收集开始前强制执行用户同意。必须在初始化 SDK 之前调用。
setConsentGiven()
授予或撤销用户对数据收集的同意。没有同意,不会向 OneSignal 发送数据,也不会创建订阅。
- 如果
setConsentRequired()
为true
,我们的 SDK 将不会完全启用,直到使用true
调用setConsentGiven
。 - 如果
setConsentGiven
设置为true
并创建了订阅,然后将其设置为false
,该订阅将不再接收更新。该订阅的当前数据保持不变,直到setConsentGiven
再次设置为true
。 - 如果您想删除用户和/或订阅数据,请使用我们的删除用户或删除订阅 API。
位置
跟踪位置点需要 3 个步骤:- 向您的应用添加位置跟踪权限和依赖项。
- iOS: 选择要请求的位置服务授权开发者指南
- Android: 请求位置权限开发者指南
LocationManager.startGetLocation: not possible, no location dependency found检查您应用的依赖项。常见解决方案是在您的
app/build.gradle
中添加:implementation 'com.google.android.gms:play-services-location:21.0.1'
- 使用
Location.setShared()
方法启用您的应用与 OneSignal 共享位置。 - 使用
Location.requestPermission
方法或使用应用内消息向用户请求位置跟踪权限。
setShared()
location
使用此方法允许我们的 SDK 开始跟踪订阅的纬度和经度。确保您首先在应用中设置了正确的位置权限。
requestPermission()
location
使用此方法向您的用户显示系统级位置权限提示,或者使用应用内消息。确保您在应用中设置了正确的位置权限并启用了您的应用与 OneSignal 共享位置。
订阅
有关更多详细信息,请参阅订阅。User.pushSubscription.id
返回当前推送订阅 ID。如果调用过早可能返回 null
。建议在订阅观察者中获取此数据以响应变化。
User.pushSubscription.token
返回当前推送订阅令牌。如果调用过早可能返回 null
。建议在订阅观察者中获取此数据以响应变化。
addObserver()
push subscription changes
使用此方法响应推送订阅变化,如:
- 设备从 Google (FCM) 或 Apple (APNs) 接收新的推送令牌
- OneSignal 分配订阅 ID
optedIn
值发生变化(如调用optIn()
或optOut()
)- 用户在系统设置中切换推送权限,然后打开应用
onPushSubscriptionChange
事件。您的监听器接收具有 previous
和 current
值的状态对象,因此您可以准确检测发生了什么变化。
要停止监听更新,请调用相关的 removeObserver()
或 removeEventListener()
方法。
optOut()
, optIn()
, optedIn
控制当前推送订阅的订阅状态(subscribed
或 unsubscribed
)。使用这些方法在您的应用内控制推送订阅状态。常见用例:1)防止向注销的用户发送推送。2)在您的应用内实现通知偏好中心。
optOut()
:将当前推送订阅状态设置为未订阅(即使用户有有效的推送令牌)。optIn()
:执行以下三个操作之一:- 如果订阅有有效的推送令牌,它将当前推送订阅状态设置为
subscribed
。 - 如果订阅没有有效的推送令牌,它显示推送权限提示。
- 如果推送权限提示已显示超过操作系统的限制(iOS 一次,Android 两次),它显示回退提示。
- 如果订阅有有效的推送令牌,它将当前推送订阅状态设置为

退回到设置提示
optedIn
:如果当前推送订阅状态为已订阅,则返回true
,否则返回false
。如果推送令牌有效但调用了optOut()
,这将返回false
。
addEmail()
, removeEmail()
向当前用户添加或移除电子邮件订阅(电子邮件地址)。在 login()
后调用 addEmail
以设置正确的用户上下文。与身份验证兼容。
addSms()
, removeSms()
向当前用户添加或移除短信订阅(电话号码)。需要 E.164 格式。在 login()
后调用 addSms
以设置正确的用户上下文。与身份验证兼容。
推送权限
requestPermission(fallbackToSettings)
push
显示原生系统提示,要求用户授予推送通知权限。可选启用链接到设置应用的回退提示。
fallbackToSettings
:如果为true
,当用户拒绝推送权限超过操作系统限制(iOS 一次,Android 两次)时,将显示回退提示。

权限被阻止时的退回设置提示
有关更多信息,请参阅推送权限提示。
addPermissionObserver()
push
使用此方法跟踪推送权限变化,如:
- 向用户显示通知权限提示。
- 用户接受或拒绝权限提示。
- 用户在设备的应用设置中启用或禁用您应用的通知,然后返回到您的应用。
onOSPermissionChanged
事件。您的监听器接收具有 from
和 to
值的状态对象,因此您可以准确检测发生了什么变化。
要停止监听更新,请调用相关的 removePermissionObserver()
方法。
getPermission()
, getCanRequestPermission()
getPermission()
返回应用级别的当前推送权限状态。如果您通过 optOut()
或用户和订阅 API 中的 enabled
参数更改了权限状态,它不会考虑 OneSignal 级别的订阅状态。我们建议使用推送权限观察者在应用运行时跟踪设备通知权限状态的变化,或使用推送订阅观察者跟踪推送订阅状态的变化,而不是使用 getPermission()
。
getCanRequestPermission()
返回尝试请求权限是否会导致向用户显示提示。如果为 false
,用户已经拒绝了权限,可以显示回退提示或根本不显示提示。有关更多信息,请参阅提示推送权限。
permissionNative
iOS
返回 iOS 设备原生权限的枚举。它将是以下之一:
0
= NotDetermined1
= Denied2
= Authorized3
= Provisional (only available in iOS 12+)4
= Ephemeral (only available in iOS 14+)
推送通知事件
addClickListener()
push
设置当用户点击打开应用的推送通知时运行的回调。
当此事件触发时,应用的活动或场景已经启动。使用此处理程序执行任何自定义逻辑——不要手动重新启动或重复应用导航。
当不再需要处理程序时,使用 removeClickListener()
或 removeEventListener()
停止监听。
addForegroundLifecycleListener()
push
允许您拦截和控制应用在前台时通知的行为。
默认情况下,OneSignal 自动显示通知。您可以使用 event.preventDefault()
覆盖此行为以:
- 抑制通知
- 自定义它
- 为异步逻辑延迟显示(如获取用户状态、记录事件)
event.notification.display()
稍后手动显示它。
这在通知服务扩展之后运行,后者在显示前修改负载。
removeForegroundLifecycleListener()
或 removeEventListener()
停止监听。
clearAllNotifications()
从通知栏中移除所有 OneSignal 通知。使用此方法而不是 Android 的 android.app.NotificationManager.cancel
。否则,当您的应用重启时,通知将被恢复。
removeNotification()
Android
基于其 Android 通知 ID 取消单个通知。
使用此方法而不是 Android 的 android.app.NotificationManager.cancel
。否则,当您的应用重启时,通知将被恢复。
removeGroupedNotifications()
Android
使用提供的组键取消一组 OneSignal 通知。分组通知是 OneSignal 概念。没有 android.app.NotificationManager
等价物。
应用内消息
In-app messages do not require any code; however, the SDK enables you to customize when messages are presented and handle lifecycle events.addTrigger()
, addTriggers()
基于单个或多个触发器决定何时显示应用内消息。有关更多信息,请参阅触发器。
触发器不会持久化到后端。它们只存在于本地设备上并适用于当前用户。
removeTrigger()
, removeTriggers()
, clearTriggers()
Remove a single, multiple, or all triggers with the provided key from the current user.
paused
Prevent In-app messages from being displayed to the user. When set to true
, no in-app messages will be presented. When set to false
, any messages the user qualifies for will be presented to them at the appropriate time.
addLifecycleListener()
响应或跟踪应用内消息的显示和解散。
addClickListener()
in-app
响应应用内消息点击事件。事件包含以下点击操作元数据:
actionId
:您在元素上设置的自定义标识符。urlTarget
:指定消息启动 URL 如何呈现的枚举。url
:操作的启动 URL(如果有的话)。closingMessage
:指示操作是否导致消息被关闭的布尔值。
Live Activity
应用程序应允许用户选择加入 Live Activities。例如,您的应用为用户提供使用按钮或呈现 IAM 在您的应用内启动 Live Activity 的选项。与通知权限或位置权限不同,您可以通过任何方法启动和更新 Live Activity 而无需明确提示。Live Activities 与 iOS 临时授权 UI 一起出现。Live Activities 必须在您的应用程序处于前台时启动。我们建议阅读 Apple 的开发者指南以了解更多关于 Live Activities 的信息。setup()
允许 OneSignal 代表应用程序管理 LiveActivity 的生命周期。这包括监听 pushToStart 令牌更新和 pushToUpdate 令牌更新。
setupDefault()
允许跨平台 SDK 通过消除客户应用程序定义和管理自己的 ActivityAttributes 的需要来管理 LiveActivity 的生命周期。有关更多详情,请参阅跨平台设置。
enter()
进入 Live Activity 将 activityId
与我们服务器上的 Live Activity 临时推送令牌关联。在使用更新 Live Activities REST API 同时更新一个或多个 Live Activities 时指定此标识符。
exit()
退出 Live activity 删除活动标识符与我们服务器上的 Live Activity 推送令牌之间的关联。
setPushToStartToken()
推送启动 live activities 的可选”低级”方法。在不更改 ActivityAttribute
结构的情况下,对 LiveActivity 启动和更新令牌提供细粒度控制。此处提供更多详情