React-native-onesignal: Obtenha o playerid / ID do usuário atual

Criado em 24 fev. 2016  ·  29Comentários  ·  Fonte: OneSignal/react-native-onesignal

Atualmente, é possível obter o ID de usuário / playerid do OneSignal atual como este no iOS? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.

Eu preciso enviar uma notificação específica para um usuário específico.

Comentários muito úteis

O objetivo era receber PlayerID de Onesignal no lançamento do aplicativo.
Então no App.js para mim funcionou o seguinte código:

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

Todos 29 comentários

Boa ideia.
Você agora tem:

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

no pacote mais recente.

Essa é uma resposta rápida incrível! Obrigado!

Deixe-me saber se funciona ou se você tiver algum problema.
Do contrário, fecharei este problema ...
Obrigado!

@avishayil Parece que está funcionando no iOS. Obrigado!

De nada!
Problema de fechamento.

como isso funciona para iOS / Swift?

@alejandrorbradford e qualquer outra pessoa que chegar aqui após uma pesquisa no Google aqui é por Swift:

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

para as pessoas que virão aqui em 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.

Não consigo obter o playerId.
Tentei com OneSignal.idsAvailable mas não é uma função. Também tentei com OneSignal.getUserId e mostra o erro "não é uma função".

Como posso obter a identificação do jogador? Instalei a versão 3.0.7.

Desde já, obrigado!

Aparentemente, agora mudou. De acordo com os documentos, você deve adicionar um ouvinte de evento:
`` ``
componentWillMount () {
OneSignal.addEventListener ('ids', this.onIds);
}

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

onIds (dispositivo) {
console.log ('Informações do dispositivo:', dispositivo);
}
`` ``

Sim, mas essa nova função onIds nunca é acionada.

E quanto ao Web push? É possível "enviar notificações para um usuário específico"?

@bhgames @jpmazza você poderia encontrar uma maneira de obter o playerID atual?

Então, usando a versão mais recente (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
},
{'Autorização': this.props.authentication_token}
);
};

Isso funcionou para mim.

@bhgames funcionou. obrigado.
OneSignal.configure () fez o truque. porque não há nada sobre isso em documentos: |

Porque você precisava saber disso. É por isso. : O desenvolvimento P React Native é o pior desenvolvimento.

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

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

O objetivo era receber PlayerID de Onesignal no lançamento do aplicativo.
Então no App.js para mim funcionou o seguinte código:

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

Alguém desvendou isso? Como posso obter o Player ID de um dispositivo específico? Eu preciso disso para poder enviar notificações push para meus usuários. Grupos e filtros são inúteis em meu aplicativo. A única coisa que preciso é o ID do jogador e não consigo encontrar nada sobre como obter isso em qualquer documentação. Alguém pode ajudar por favor? Meu aplicativo é integrado ao Ionic V3.

Eu tenho o mesmo problema, a documentação não é 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 é o meu código e me foi dito em outro tópico que eu deveria usar OneSignal.getPermissionSubscriptionState (callback), mas onde? e como ? e como vou passar o playerID? por favor alguem ajude

@davekedar Consegui fazer isso funcionar chamando-o em meu ionViewDidLoad ()

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

Isso está funcionando para mim; dê uma chance.

Obrigado @kenef

Basta invocar OneSignal.configure() para que um evento seja emitido no ouvinte 'ids' .

Por exemplo:

  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 ajudar aqueles que ainda estão tendo problemas para obter player_id .

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

O device retorna um objeto. Então, para realmente obter o player_id você está procurando, você deve fazer algo como device.userId

Como faço para que isso funcione em Córdoba?

@luizmagao qual é o seu ambiente?

Olá, tenho Quickblox dialogid, como obtenho o Quickblox userid usando este dialogid

Basta invocar OneSignal.configure() para que um evento seja emitido no ouvinte 'ids' .

Por exemplo:

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

Então, como você pode extrair o ID? Você poderia explicar mais?

Obtenha todos os playerid / userid usando jquery e outros. Por favor, deixe-me saber se é possível ou não

Esta página foi útil?
0 / 5 - 0 avaliações