使用 Unity (C#) 获取 OneSignal UserID

Getting OneSignal UserID with Unity (C#)

在我的应用程序中,我有一些推送通知订阅者 (OneSignal)。我正在尝试获取这样的用户 ID:

OneSignal.GetIdsAvailable(IdsAvailable);
....
....
private void IdsAvailable(string userID, string pushToken)
{
    playeridx = userID;
    System.Diagnostics.Debug.WriteLine("UserID:" + userID);
    System.Diagnostics.Debug.WriteLine("pushToken:" + pushToken);
}

但是我得到一个错误:"OneSignal does not contain a definition for GetIdsAvailable."

有什么想法吗?

看起来您正在使用 OneSignal Windows SDK. If you want to do this in Unity, setup the Unity SDK (if you haven't done so already) and then perhaps use GetPermissionSubscriptionState 中找到的方法来检索当前用户的 userIdpushToken,而不是使用 .GetIdsAvailable()

如我所见,我们必须使用下面的代码来获取 UserID。但是,当 UserID 从 Onesignal 到达时触发哪个事件?如果我在这一行之后立即使用 UserID,它总是有 UserID 吗?这对我来说听起来很奇怪,因为有时它还不能收到用户 ID。

OSPermissionSubscriptionState state = OneSignal.GetPermissionSubscriptionState();
extraMessage += " UserId: "+state.subscriptionStatus.userId;