在新的OneSignal 4.0.0中,可以使用addPermissionObserver
方法来获取用户ID。下面是一个示例代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.onesignal.OneSignal;
import com.onesignal.OSPermissionObserver;
import com.onesignal.OSPermissionStateChanges;
import com.onesignal.OSSubscriptionObserver;
import com.onesignal.OSSubscriptionStateChanges;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 添加订阅状态观察者
OneSignal.addSubscriptionObserver(new OSSubscriptionObserver() {
@Override
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
// 获取用户ID
String userId = stateChanges.getTo().getUserId();
Log.d(TAG, "User ID: " + userId);
}
});
// 添加权限状态观察者
OneSignal.addPermissionObserver(new OSPermissionObserver() {
@Override
public void onOSPermissionChanged(OSPermissionStateChanges stateChanges) {
// 获取用户ID
String userId = OneSignal.getDeviceState().getUserId();
Log.d(TAG, "User ID: " + userId);
}
});
}
}
此示例代码中,我们通过addSubscriptionObserver
方法添加了一个订阅状态观察者,并在onOSSubscriptionChanged
方法中获取用户ID。
我们还通过addPermissionObserver
方法添加了一个权限状态观察者,并在onOSPermissionChanged
方法中获取用户ID。
这些观察者将在用户订阅状态或权限状态发生变化时被调用,您可以在这些方法中获取用户ID。
请注意,获取用户ID需要用户已经授权或已经订阅才能成功返回。如果用户尚未授权或尚未订阅,getUserId
方法将返回null。