如何在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
相关产品推荐
相关产品推荐

