OSPermissionSubscriptionState:无法解析符号

问题描述

我正在尝试向我的移动原生聊天应用添加推送通知。我正在尝试使用 Onesignal。

我可以发送手动推送通知,所以我认为gradle部分没问题

不推荐使用 idsAvaiable 方法,我开始寻找如何获取 userId。

OSPermissionSubscriptionState status = Onesignal.getPermissionSubscriptionState();
    String userId = status.getSubscriptionStatus().getUserId();

在这里,我试图获取带有状态的 userId,但它说:

无法解析符号“OSPermissionSubscriptionState”

如何获取用户 ID?

解决方法

根本原因

从 OneSignal API 4.0.0 中删除了许多 API,包括 OSPermissionSubscriptionState

解决方案 1

使用OneSignal.getDeviceState()

OSDeviceState device = OneSignal.getDeviceState();
String userId = device.getUserId();

解决方案 2

使用OneSignal.addSubscriptionObserver()

OneSignal.addSubscriptionObserver(new OSSubscriptionObserver() {

    @Override
    public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
        if (!stateChanges.getFrom().isSubscribed() && stateChanges.getTo().isSubscribed()) {
            // Get user id
            String userId = stateChanges.getTo().getUserId();
        }
    }
});

有关详细信息,请参阅更改日志 here