You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Java中获取One Signal 5.0.2的Player ID?

OneSignal 5.0.2 版本获取 Player ID(Android Java)

在OneSignal 5.x版本中,旧版的OneSignal.getPermissionSubscriptionState()方法已被废弃,需通过新的API来获取Player ID(当前也被称为Subscription ID),以下是两种可行方案:

方案一:监听订阅状态变化获取

注册订阅状态观察者,在用户完成订阅后自动获取ID:

import com.onesignal.OneSignal;
import com.onesignal.core.subscribers.ISubscriptionObserver;
import com.onesignal.core.subscribers.SubscriptionChangedEvent;

// 先完成OneSignal初始化(建议在Application或Activity的onCreate中执行)
OneSignal.initWithContext(this);
OneSignal.setAppId("你的应用ID");

// 添加订阅状态监听
OneSignal.getSubscriptionManager().addObserver(new ISubscriptionObserver() {
    @Override
    public void onSubscriptionChanged(SubscriptionChangedEvent event) {
        String playerId = event.getSubscription().getId();
        // 成功获取到Player ID,可在此处处理业务逻辑
        if (playerId != null) {
            // 例如存储ID或上传到服务器
        }
    }
});

方案二:直接获取当前订阅ID

若确认用户已完成通知授权与订阅,可直接调用以下方法获取:

// 注意:未订阅状态下会返回null,建议结合监听使用
String playerId = OneSignal.getSubscriptionManager().getSubscription().getId();

关键说明

  • Player ID仅在用户同意通知权限并成功订阅后才会生成,未授权或未完成订阅时会返回null
  • 5.x版本的OneSignal将核心功能拆分到各类管理器中,订阅相关操作统一通过OneSignal.getSubscriptionManager()处理

内容的提问来源于stack exchange,提问作者Fariba Laiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:07:33