React-native-onesignal: Holen Sie sich die aktuelle Spieler-ID/Benutzer-ID

Erstellt am 24. Feb. 2016  ·  29Kommentare  ·  Quelle: OneSignal/react-native-onesignal

Ist es derzeit möglich, die aktuelle OneSignal-Benutzer-ID / -Player-ID wie folgt auf iOS zu erhalten? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.

Ich benötige es, um eine bestimmte Benachrichtigung an einen bestimmten Benutzer zu senden.

Hilfreichster Kommentar

Ziel war es, beim Start der Anwendung die PlayerID von Onesignal zu erhalten.
Also in App.js hat für mich der folgende Code funktioniert:

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

Alle 29 Kommentare

Gute Idee.
Sie haben jetzt:

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

auf dem neuesten Paket.

Das ist eine tolle schnelle Antwort! Dankeschön!

Lassen Sie mich wissen, ob es funktioniert oder Sie irgendwelche Probleme haben.
Wenn nicht, schließe ich das Thema...
Vielen Dank!

@avishayil Ich

Gern geschehen!
Abschlussproblem.

Wie funktioniert das für iOS/Swift?

@alejandrorbradford und alle anderen, die nach einer Google-Suche hierher kommen, sind für Swift:

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

für Leute, die 2017 hierher kommen:

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.

Ich kann die PlayerId nicht abrufen.
Ich habe es mit OneSignal.idsAvailable versucht, ist aber keine Funktion. Habe es auch mit OneSignal.getUserId versucht und es wird der Fehler "ist keine Funktion" angezeigt.

Wie erhalte ich die Spieler-ID? Ich habe die Version 3.0.7 installiert.

Danke im Voraus!

Offenbar hat sich das jetzt geändert. Laut den Dokumenten müssen Sie einen Ereignis-Listener hinzufügen:
````
KomponenteWillMount() {
OneSignal.addEventListener('ids', this.onIds);
}

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

onIds(Gerät) {
console.log('Geräteinfo:', Gerät);
}
````

Ja, aber diese neue onIds-Funktion wird nie gefeuert.

Was ist mit Web-Push? Ist es möglich, "Benachrichtigungen an einen bestimmten Benutzer zu senden"?

@bhgames @jpmazza könntest du eine Möglichkeit finden, die aktuelle Spieler-ID zu erhalten?

Verwenden Sie also die neueste Version (3.2.2)

KomponenteWillMount() {
OneSignal.init(Config().pushId, {kOSSettingsKeyAutoPrompt: true});

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

}

asynchrone updatePushId(Gerät) {
postJSON(UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{ 'Autorisierung': this.props.authentication_token }
);
};

Das hat bei mir funktioniert.

@bhgames es hat funktioniert. Danke.
OneSignal.configure() hat den Trick gemacht. warum es in Dokumenten nichts darüber gibt :|

Weil du es wissen musstest. Deshalb. :P React Native Entwicklung ist die schlechteste Entwicklung.

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

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

Ziel war es, beim Start der Anwendung die PlayerID von Onesignal zu erhalten.
Also in App.js hat für mich der folgende Code funktioniert:

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

Hat das jemand herausgefunden? Wie erhalte ich die Player-ID eines bestimmten Geräts? Ich benötige dies, um Push-Benachrichtigungen an meine Benutzer senden zu können. Gruppen und Filter sind in meiner Anwendung wertlos. Das einzige, was ich brauche, ist die Spieler-ID und ich kann in keiner der Dokumentationen finden, wie ich diese bekomme. Kann jemand bitte helfen? Meine App ist in Ionic V3 gebaut.

Ich habe das gleiche Problem, die Dokumentation ist nicht klar

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

Dies ist mein Code und es wurde mir in einem anderen Thread gesagt, dass ich OneSignal.getPermissionSubscriptionState(callback) verwenden sollte, aber wo? und wie ? und wie übergebe ich die Spieler-ID? bitte hilft jemand

@davekedar Ich konnte dies zum

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

Das funktioniert für mich; Versuch es einmal.

Danke @kenef

Der einfache Aufruf von OneSignal.configure() reichte aus, um ein Ereignis auf dem Listener 'ids' .

Z.B:

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

Um denen zu helfen, die immer noch Probleme haben, die player_id .

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

Das device gibt ein Objekt zurück. Um also wirklich die player_id zu bekommen, die Sie suchen, sollten Sie etwas tun wie device.userId

Wie bekomme ich das in Cordova zum Laufen?

@luizmagao was ist deine Umgebung?

Hallo, ich habe Quickblox-Dialogid, wie ich Quickblox-Benutzer-ID mit dieser Dialogid abrufen kann

Der einfache Aufruf von OneSignal.configure() reichte aus, um ein Ereignis auf dem Listener 'ids' .

Z.B:

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

Also, wie können Sie die ID extrahieren? Könnten Sie es näher erklären?

Holen Sie sich die gesamte Spieler-ID / Benutzer-ID mit jquery und anderen. Bitte lassen Sie mich wissen, ob es möglich ist oder nicht

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen