React-native-onesignal: Получить текущий playerid / userid

Созданный на 24 февр. 2016  ·  29Комментарии  ·  Источник: OneSignal/react-native-onesignal

Возможно ли в настоящее время получить текущий идентификатор пользователя / идентификатор игрока OneSignal, подобный этому, на iOS? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.

Мне он нужен, чтобы отправить конкретное уведомление конкретному пользователю.

Самый полезный комментарий

Целью было получить PlayerID от Onesignal при запуске приложения.
Итак, в App.js у меня работал следующий код:

let userID;
componentWillMount() {
    OneSignal.init(ONESIGNAL_APP_ID, {
      kOSSettingsKeyAutoPrompt: true,
    });
    OneSignal.getPermissionSubscriptionState( (status) => {
      userID = status.userId;
      alert(userID);
    });
  }

Все 29 Комментарий

Отличная идея.
Теперь у вас есть:

OneSignal.idsAvailable((idsAvailable) => { 
    console.log(idsAvailable.playerId);
    console.log(idsAvailable.pushToken);
});

на последнем пакете.

Это потрясающе быстрый ответ! Спасибо!

Сообщите мне, если это сработает или у вас возникнут проблемы.
Если нет, закрою этот вопрос ...
Спасибо!

@avishayil Похоже, он работает на iOS. Спасибо!

Пожалуйста!
Заключительный выпуск.

как это работает для iOS / Swift?

@alejandrorbradford и все, кто попадает сюда после поиска в Google, это для Swift:

OneSignal.idsAvailable { (pushID, pushToken) in
    print(pushID)
    print(pushToken)
}

для людей, приезжающих сюда в 2017 году:

Deprecations and Major Changes
March 21, 2017: Removed getRegistrationId() from documentation. getUserId() should always be used instead.
March 15, 2016: Deprecated getIdsAvailable() in favor of getUserId() and getRegistrationId(). Deprecated idsAvailableCallback in favor of subscriptionChange event.

Я не могу получить playerId.
Я пробовал с OneSignal.idsAvailable но это не функция. Также пробовал с OneSignal.getUserId и он отображает ошибку "не является функцией".

Как я могу получить идентификатор игрока? У меня установлена ​​версия 3.0.7.

Заранее спасибо!

Видимо сейчас изменилось. Согласно документам вы должны добавить прослушиватель событий:
`` ''
componentWillMount () {
OneSignal.addEventListener ('ids', this.onIds);
}

componentWillUnmount () {
OneSignal.removeEventListener ('ids', this.onIds);
}

onIds (устройство) {
console.log ('Информация об устройстве:', устройство);
}
`` ''

Да, но эта новая функция onIds никогда не запускается.

А как насчет Web push? Можно ли «отправлять уведомления конкретному пользователю»?

@bhgames @jpmazza не могли бы вы найти способ узнать текущий playerID?

Итак, используя последнюю версию (3.2.2)

componentWillMount () {
OneSignal.init (Config (). PushId, {kOSSettingsKeyAutoPrompt: true});

OneSignal.addEventListener('ids', this.updatePushId.bind(this));
OneSignal.configure()

}

async updatePushId (устройство) {
postJSON (UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{'Авторизация': this.props.authentication_token}
);
};

Это сработало для меня.

@bhgames это сработало. Благодарю.
OneSignal.configure () сделал свое дело. почему в документах ничего об этом нет: |

Потому что тебе нужно было это знать. Вот почему. : P Разработка React Native - худшая разработка.

https://documentation.onesignal.com/docs/ios-native-sdk#section --getpermissionsubscriptionstate-

let userId = OneSignal.getPermissionSubscriptionState().subscriptionStatus.userId
print("your userID:",userId!)

Целью было получить PlayerID от Onesignal при запуске приложения.
Итак, в App.js у меня работал следующий код:

let userID;
componentWillMount() {
    OneSignal.init(ONESIGNAL_APP_ID, {
      kOSSettingsKeyAutoPrompt: true,
    });
    OneSignal.getPermissionSubscriptionState( (status) => {
      userID = status.userId;
      alert(userID);
    });
  }

Кто-нибудь в этом разобрался? Как я могу получить идентификатор игрока для определенного устройства? Мне это нужно для отправки push-уведомлений моим пользователям. Группы и фильтры в моем приложении бесполезны. Единственное, что мне нужно, это идентификатор игрока, и я не могу найти ничего о том, как его получить, ни в одной документации. Может кто-нибудь помочь? Мое приложение построено на Ionic V3.

У меня такая же проблема, неясно, как обстоят дела с документацией

import React from "react";
import { AsyncStorage } from "react-native";
import { createRootNavigator } from "./router";
import { isSignedIn } from "./auth";
import { YellowBox } from "react-native";
import OneSignal from "react-native-onesignal"; // Import package from node modules
//import { Provider } from 'react-redux';
//import { store } from '../app/redux/app-reducer';
YellowBox.ignoreWarnings([
  "Warning: isMounted(...) is deprecated",
  "Module RCTImageLoader"
]);
export default class App extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      signedIn: false,
      checkedSignIn: false
    };
  }
  componentWillMount() {
    OneSignal.init("my app id");

    OneSignal.addEventListener("received", this.onReceived);
    OneSignal.addEventListener("opened", this.onOpened);
    OneSignal.addEventListener("ids", this.onIds);
  }

  componentWillUnmount() {
    OneSignal.removeEventListener("received", this.onReceived);
    OneSignal.removeEventListener("opened", this.onOpened);
    OneSignal.removeEventListener("ids", this.onIds);
  }

  onReceived(notification) {
    console.log("Notification received: ", notification);
  }

  onOpened(openResult) {
    console.log("Message: ", openResult.notification.payload.body);
    console.log("Data: ", openResult.notification.payload.additionalData);
    console.log("isActive: ", openResult.notification.isAppInFocus);
    console.log("openResult: ", openResult);
  }

  onIds(device) {
    console.log("Device info: ", device);
  }

  componentDidMount() {
    // status = AsyncStorage.getItem('loggedIn');
    // if(status === 'success'){
    //   this.setState({checkedSignIn: true});
    // }
    isSignedIn()
      .then(res => this.setState({ signedIn: res, checkedSignIn: true }))
      .catch(err => alert("An error occurred"));
  }

  render() {
    const { checkedSignIn, signedIn } = this.state;

    // If we haven't checked AsyncStorage yet, don't render anything (better ways to do this)
    if (!checkedSignIn) {
      return null;
    }

    const Layout = createRootNavigator(signedIn);
    return (
      //<Provider store={store}>
      <Layout />
      //  </Provider>
    );
  }
}

это мой код, и в другом потоке мне сказали, что я должен использовать OneSignal.getPermissionSubscriptionState (обратный вызов), но где? и как ? и как передать playerID? пожалуйста, помогите кому-нибудь

@davekedar Мне удалось заставить это работать, вызвав его в моем ionViewDidLoad ()

window["plugins"].OneSignal.getIds(function(ids) {
    //alert(JSON.stringify(ids['userId']));
    let playerID = ids['userId'];
    //alert(playerID);
});

Это работает для меня; дать ему шанс.

Спасибо @kenef

Простого вызова OneSignal.configure() было достаточно, чтобы на слушателе 'ids' было сгенерировано событие.

Например:

  componentWillMount() {
      OneSignal.init("APP ID GOES HERE", {kOSSettingsKeyAutoPrompt : true});
      OneSignal.addEventListener('received', this.onReceived);
      OneSignal.addEventListener('opened', this.onOpened);
      OneSignal.addEventListener('ids', this.onIds);

      OneSignal.configure();  // <-- add this line
  }

  componentWillUnmount() {
      OneSignal.removeEventListener('received', this.onReceived);
      OneSignal.removeEventListener('opened', this.onOpened);
      OneSignal.removeEventListener('ids', this.onIds);
  }

  onReceived(notification) {
      console.log("Notification received: ", notification);
  }

  onOpened(openResult) {
    console.log('Message: ', openResult.notification.payload.body);
    console.log('Data: ', openResult.notification.payload.additionalData);
    console.log('isActive: ', openResult.notification.isAppInFocus);
    console.log('openResult: ', openResult);
  }

  onIds(device) {
    console.log('Device info: ', device);
  }

Чтобы помочь тем, у кого все еще есть проблемы с получением player_id .

onIds(device) {
    console.log('Device info: ', device);
  }

device возвращает объект. Итак, чтобы действительно получить player_id которые вы ищете, вы должны сделать что-то вроде device.userId

Как мне заставить это работать в Кордове?

@luizmagao какова ваша среда?

привет, у меня есть quickblox dialogid, как я получаю идентификатор пользователя quickblox с помощью этого dialogid

Простого вызова OneSignal.configure() было достаточно, чтобы на слушателе 'ids' было сгенерировано событие.

Например:

  componentWillMount() {
      OneSignal.init("APP ID GOES HERE", {kOSSettingsKeyAutoPrompt : true});
      OneSignal.addEventListener('received', this.onReceived);
      OneSignal.addEventListener('opened', this.onOpened);
      OneSignal.addEventListener('ids', this.onIds);

      OneSignal.configure();  // <-- add this line
  }

  componentWillUnmount() {
      OneSignal.removeEventListener('received', this.onReceived);
      OneSignal.removeEventListener('opened', this.onOpened);
      OneSignal.removeEventListener('ids', this.onIds);
  }

  onReceived(notification) {
      console.log("Notification received: ", notification);
  }

  onOpened(openResult) {
    console.log('Message: ', openResult.notification.payload.body);
    console.log('Data: ', openResult.notification.payload.additionalData);
    console.log('isActive: ', openResult.notification.isAppInFocus);
    console.log('openResult: ', openResult);
  }

  onIds(device) {
    console.log('Device info: ', device);
  }

Итак, как вы можете извлечь идентификатор? Не могли бы вы объяснить это поподробнее?

Получите все playerid / userid с помощью jquery и др. Пожалуйста, дайте мне знать, это возможно или нет

Была ли эта страница полезной?
0 / 5 - 0 рейтинги