Я разрабатываю приложение для ресторана. Я использую One Signal в своем приложении для отправки уведомлений. Здесь, пока я размещаю заказ, мне нужно отправить уникальный идентификатор одного сигнала для конкретного пользователя для получения уведомления о том, что «Ваш заказ успешно размещен... Он находится в процессе. Пожалуйста, подождите». Для этого мне нужен идентификатор пользователя One Signal. Как я могу это получить? Я новичок в One Signal. Помогите мне, пожалуйста.
Как получить уникальный идентификатор пользователя One Signal на мобильном телефоне?
Ответы (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()
Приведенное выше решение для Android устарело. Используйте:
OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState();
status.getSubscriptionStatus().getUserId();
OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()
- person Vahid Amiri; 18.06.2019
Для 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
для iOS:
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
if let id = status.subscriptionStatus.userId {
oneSignalPlayer_ID = id
print("\nOneSignal UserId:", id)
}
@Лакшми Редди
в 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);
Полное решение:
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();
}
}
String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()
Это возвращает значение null, если SubscriptionStatus не изменен. Перейдите по ссылке ниже, чтобы узнать, как получить OneSignal userId из JSONObject getSubscriptionStatus.
https://stackoverflow.com/a/65107184/1906738
Если вы используете OneSignal версии 2.6.1 и выше:
var userId = OneSignal.shared.getPermissionSubscriptionState().then((userObject) => userObject.subscriptionStatus.userId).toString();
Все вышеперечисленное у меня не работало в андроиде. из последней версии я получил это решение.
var userId = OneSignal.getDeviceState().then((value) => {
var deviceInfo= JSON.stringify(value);
console.log(deviceInfo.userId)
})
для любого, как я, может использовать приведенный выше код, чтобы получить уникальный идентификатор пользователя.
OneSignal 4.1 Android String playerId = OneSignal.getDeviceState().getUserId();
для получения идентификатора игрока
Добавьте это в свой класс приложений
public void onCreate() {
...
OneSignal.initWithContext(this);
OneSignal.setAppId(ONESIGNAL_APP_ID);
// Use One Signal User ID
OneSignal.getDeviceState().getUserId()
...
}
В Kotlin используйте приведенный ниже код.
val oneSignalUserID = OneSignal.getDeviceState()!!.userId
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)
}