React-native-onesignal: Obtener el playerid / userid actual

Creado en 24 feb. 2016  ·  29Comentarios  ·  Fuente: OneSignal/react-native-onesignal

¿Es actualmente posible obtener el ID de usuario / jugador actual de OneSignal como este en iOS? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.

Lo necesito para enviar una notificación específica a un usuario específico.

Comentario más útil

El objetivo era recibir PlayerID de Onesignal al iniciar la aplicación.
Entonces en App.js para mí funcionó el siguiente código:

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

Todos 29 comentarios

Buena idea.
Ahora tienes:

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

en el paquete más reciente.

¡Esa es una respuesta increíblemente rápida! ¡Gracias!

Avísame si funciona o si tienes algún problema.
Si no es así, cerraré este problema ...
¡Gracias!

@avishayil Parece que está funcionando en iOS. ¡Gracias!

¡Eres bienvenido!
Problema de cierre.

¿Cómo funciona eso para iOS / Swift?

@alejandrorbradford y cualquier otra persona que llegue aquí después de una búsqueda en Google, aquí es para Swift:

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

para las personas que vienen aquí en 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.

No puedo obtener el playerId.
Intenté con OneSignal.idsAvailable pero no es una función. También probé con OneSignal.getUserId y muestra el error "no es una función".

¿Cómo puedo obtener la identificación del jugador? He instalado la versión 3.0.7.

¡Gracias por adelantado!

Al parecer, ahora ha cambiado. De acuerdo con los documentos, debe agregar un detector de eventos:
`` ``
componentWillMount () {
OneSignal.addEventListener ('ids', this.onIds);
}

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

onIds (dispositivo) {
console.log ('Información del dispositivo:', dispositivo);
}
`` ``

Sí, pero esa nueva función onIds nunca se activa.

¿Qué pasa con Web push? ¿Es posible "enviar notificaciones a un usuario específico"?

@bhgames @jpmazza ¿ Podrías encontrar una manera de obtener el ID de jugador actual?

Entonces, usando la última versión (3.2.2)

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

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

}

async updatePushId (dispositivo) {
postJSON (UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{'Autorización': this.props.authentication_token}
);
};

Esto funcionó para mí.

@bhgames funcionó. Gracias.
OneSignal.configure () hizo el truco. por qué no hay nada al respecto en los documentos: |

Porque necesitabas saberlo. Es por eso. : El desarrollo P React Native es el peor desarrollo.

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

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

El objetivo era recibir PlayerID de Onesignal al iniciar la aplicación.
Entonces en App.js para mí funcionó el siguiente código:

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

¿Alguien ha descubierto esto? ¿Cómo puedo obtener el ID de jugador de un dispositivo específico? Necesito esto para poder enviar notificaciones automáticas a mis usuarios. Los grupos y filtros no valen nada en mi aplicación. Lo único que necesito es el ID del jugador y no puedo encontrar nada sobre cómo obtenerlo en la documentación. ¿Puede ayudarme alguien, por favor? Mi aplicación está integrada en Ionic V3.

Tengo el mismo problema, la documentacion no esta clara

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>
    );
  }
}

este es mi código y me dijeron en otro hilo que debería usar OneSignal.getPermissionSubscriptionState (devolución de llamada) pero ¿dónde? y cómo ? y ¿cómo pasaré playerID? por favor que alguien ayude

@davekedar Pude hacer que esto funcionara llamándolo en mi ionViewDidLoad ()

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

Esto es trabajo para mí; Dale un tiro.

Gracias @kenef

Simplemente invocar OneSignal.configure() fue suficiente para que se emitiera un evento en el oyente 'ids' .

P.ej:

  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);
  }

Para ayudar a quienes aún tienen problemas para obtener el player_id .

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

device devuelve un objeto. Entonces, para obtener realmente el player_id que está buscando, debe hacer algo como device.userId

¿Cómo hago para que esto funcione en Córdoba?

@luizmagao ¿cuál es tu entorno?

hola tengo el id de diálogo de quickblox cómo obtengo el id de usuario de quickblox usando este id de diálogo

Simplemente invocar OneSignal.configure() fue suficiente para que se emitiera un evento en el oyente 'ids' .

P.ej:

  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);
  }

Entonces, ¿cómo se puede extraer la identificación? ¿Podrías explicarlo más?

Obtenga todos los playerid / userid usando jquery y otros. Por favor, avíseme que es posible o no

¿Fue útil esta página
0 / 5 - 0 calificaciones