Как получить уникальный идентификатор пользователя One Signal на мобильном телефоне?

Я разрабатываю приложение для ресторана. Я использую One Signal в своем приложении для отправки уведомлений. Здесь, пока я размещаю заказ, мне нужно отправить уникальный идентификатор одного сигнала для конкретного пользователя для получения уведомления о том, что «Ваш заказ успешно размещен... Он находится в процессе. Пожалуйста, подождите». Для этого мне нужен идентификатор пользователя One Signal. Как я могу это получить? Я новичок в One Signal. Помогите мне, пожалуйста.


person Parama Sudha    schedule 02.04.2016    source источник


Ответы (13)


Получите уникальный идентификатор OneSignal, используя следующий код, который находится на официальном сайте OneSignal.

OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
        @Override
        public void idsAvailable(String userId, String registrationId) {
            Log.d("debug", "User:" + userId);
            if (registrationId != null)
                Log.d("debug", "registrationId:" + registrationId);

        }
    });

Ссылаться:

Получение кода на официальном сайте

Этот приведенный выше код устарел. Пожалуйста, используйте приведенный ниже код.

String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()
person Parama Sudha    schedule 02.04.2016
comment
Я пытался сделать это на iOS, и это объясняет, как это сделать. Та же логика в iOS - person blackmoon; 03.04.2017
comment
Извините .. нет идей для IOS ji @blackmoon - person Parama Sudha; 05.04.2017
comment
Любое решение для iOS @blackmon - person Lakshmi Reddy; 11.05.2017
comment
Приведенное выше решение для Android устарело. Использование: OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState(); status.getSubscriptionStatus().getUserId(); - person Amjed Baig; 21.11.2017
comment
String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId() возвращает ноль! :( - person Syed Arsalan Kazmi; 02.12.2020
comment
Не работает для их последней версии 4.0.0. :( - person Syed Arsalan Kazmi; 16.12.2020

Приведенное выше решение для Android устарело. Используйте:

OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState();
status.getSubscriptionStatus().getUserId();
person Amjed Baig    schedule 21.11.2017
comment
Один вкладыш: OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId() - person Vahid Amiri; 18.06.2019
comment
String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId() возвращает ноль! :( - person Syed Arsalan Kazmi; 02.12.2020
comment
Не работает для их последней версии 4.0.0. :( - person Syed Arsalan Kazmi; 19.12.2020

Для Android вы можете получить идентификаторы пользователей, также известные как идентификаторы игроков, начиная с версии 3.5.0+ собственного Android SDK, используя метод getPermissionSubscriptionState и addSubscriptionObserver.

Подробнее об использовании getPermissionSubscriptionState см.: https://documentation.onesignal.com/docs/android-native-sdk#section--getpermissionsubscriptionstate-

Для добавления наблюдателей подписки см.: https://documentation.onesignal.com/docs/android-native-sdk#section--addsubscriptionobserver-

На Github есть собственный пример Android: https://github.com/OneSignal/OneSignal-Android-SDK

Он находится в папке примеров с надписью AndroidStudio.

Для iOS вы можете получить идентификаторы игроков, начиная с версии 2.5.0 собственного SDK iOS, используя метод getPermissionSubscriptionState и addSubscriptionObserver.

Подробнее об использовании getPermissionSubscriptionState см.: https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate-

Для добавления наблюдателей подписки см.: https://documentation.onesignal.com/docs/ios-native-sdk#section--addsubscriptionobserver-

В Swift на Github есть пример проекта iOS, который может быть полезен: https://github.com/OneSignal/OneSignal-iOS-SDK/tree/master/Examples

person JonF    schedule 11.01.2018

для iOS:

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
    if let id = status.subscriptionStatus.userId {
    oneSignalPlayer_ID = id
    print("\nOneSignal UserId:", id)
}
person Yaroslav Dukal    schedule 28.06.2017

@Лакшми Редди

в iOS вы можете сделать, как показано ниже:

OSPermissionSubscriptionState* status = [OneSignal getPermissionSubscriptionState];
    status.permissionStatus.hasPrompted
    status.permissionStatus.status
//                                                            <- OneSignal idsAvailable is deprecated.it's the alternative
    status.subscriptionStatus.subscribed
    status.subscriptionStatus.userSubscriptionSetting
    status.subscriptionStatus.userId
    status.subscriptionStatus.pushToken
NSLog(@"Push Token - %@",status.subscriptionStatus.pushToken);
NSLog(@"Push User ID - %@",status.subscriptionStatus.userId);
person Julfikar    schedule 06.09.2017

Полное решение:

import android.app.Application;
import com.onesignal.OneSignal;

public class ApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // OneSignal Initialization
        OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .init();
        String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId();
    }
}
person Erçin Dedeoğlu    schedule 08.05.2020
comment
эта строка возвращает null OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId(); - person Sevket; 28.07.2020

String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()

Это возвращает значение null, если SubscriptionStatus не изменен. Перейдите по ссылке ниже, чтобы узнать, как получить OneSignal userId из JSONObject getSubscriptionStatus.

https://stackoverflow.com/a/65107184/1906738

person Syed Arsalan Kazmi    schedule 02.12.2020

Если вы используете OneSignal версии 2.6.1 и выше:

var userId = OneSignal.shared.getPermissionSubscriptionState().then((userObject) => userObject.subscriptionStatus.userId).toString();
person inspiredMichael    schedule 19.12.2020

Все вышеперечисленное у меня не работало в андроиде. из последней версии я получил это решение.

var userId = OneSignal.getDeviceState().then((value) => {
  var deviceInfo= JSON.stringify(value);
  console.log(deviceInfo.userId)
})

для любого, как я, может использовать приведенный выше код, чтобы получить уникальный идентификатор пользователя.

person pankaj chaturvedi    schedule 16.01.2021

OneSignal 4.1 Android String playerId = OneSignal.getDeviceState().getUserId(); для получения идентификатора игрока

person logancodemaker    schedule 11.02.2021

Добавьте это в свой класс приложений

public void onCreate() {
   ...
   OneSignal.initWithContext(this);
   OneSignal.setAppId(ONESIGNAL_APP_ID);

   // Use One Signal User ID
   OneSignal.getDeviceState().getUserId()
   ...

}

person ItSNeverLate    schedule 16.03.2021

В Kotlin используйте приведенный ниже код.

val oneSignalUserID = OneSignal.getDeviceState()!!.userId
person Hemanth Kumar NV    schedule 02.06.2021

Android Java

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

Android Котлин

val oneSignalUserID = OneSignal.getDeviceState()!!.userId

iOS

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
    if let id = status.subscriptionStatus.userId {
    oneSignalPlayer_ID = id
    print("\nOneSignal UserId:", id)
}
person Abdul Basit Rishi    schedule 01.07.2021