React-native-onesignal: 現在のplayerid / useridを取得します

作成日 2016年02月24日  ·  29コメント  ·  ソース: OneSignal/react-native-onesignal

現在、iOSでこのような現在のOneSignalユーザーID /プレーヤーIDを取得することは可能ですか? https://documentation.onesignal.com/docs/ios-sdk-api#section-idsavailable

特定のユーザーに特定の通知を送信するために必要です。

最も参考になるコメント

目標は、アプリケーションの起動時にOnesignalからPlayerIDを受け取ることでした。
したがって、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);
});

最新のパッケージで。

それは素晴らしい速い応答です! ありがとうございました!

それが機能するか、何か問題があるかどうか私に知らせてください。
そうでない場合は、この問題をクローズします...
ありがとう!

@avishayiliOSで動作しているようです。 ありがとうございました!

どういたしまして!
クロージングの問題。

それはiOS / Swiftでどのように機能しますか?

@alejandrorbradfordとここでグーグル検索した後にここに

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試してみると、「関数ではありません」というエラーが表示されます。

プレーヤーIDを取得するにはどうすればよいですか? バージョン3.0.7をインストールしました。

前もって感謝します!

どうやらそれは今変わった。 ドキュメントによると、イベントリスナーを追加する必要があります。
「」
componentWillMount(){
OneSignal.addEventListener( 'ids'、this.onIds);
}

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

onIds(デバイス){
console.log( 'デバイス情報:'、デバイス);
}
「」

ええ、でもその新しいonIds関数は起動されません。

Webプッシュはどうですか? 「特定のユーザーに通知を送信する」ことはできますか?

@bhgames @jpmazza現在のplayerIDを取得する方法を見つけることができますか?

したがって、最新バージョン(3.2.2)を使用します

componentWillMount(){
OneSignal.init(Config()。pushId、{kOSSettingsKeyAutoPrompt:true});

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

}

非同期updatePushId(デバイス){
postJSON(UPDATE_PUSHID_URL、
{{
user_id:this.props.user.id、
push_id:device.userId
}、
{'承認':this.props.authentication_token}
);
};

これは私のために働いた。

@bhgamesそれは
OneSignal.configure()がそのトリックを行いました。 なぜそれについて文書に何もないのか:|

あなたはそれを知る必要があったからです。 それが理由です。 :P ReactNative開発は最悪の開発です。

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

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

目標は、アプリケーションの起動時にOnesignalからPlayerIDを受け取ることでした。
したがって、App.jsでは、次のコードを使用しました。

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

誰かがこれを理解しましたか? 特定のデバイスのプレーヤーIDを取得するにはどうすればよいですか? ユーザーにプッシュ通知を送信できるようにするには、これが必要です。 私のアプリケーションでは、グループとフィルターは無価値です。 必要なのはプレーヤーIDだけですが、これを取得する方法についてはどのドキュメントにも見つかりません。 誰か助けてもらえますか? 私のアプリはIonicV3に組み込まれています。

私は同じ問題を抱えています、documentatoinは明確ではありません

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(callback)を使用する必要があると言われましたが、どこで? そしてどうやって ? そして、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

これをCordovaで機能させるにはどうすればよいですか?

@luizmagaoあなたの環境は何ですか?

こんにちは私はquickbloxdialogidを持っていますこのdialogidを使用してquickbloxユーザーIDを取得する方法

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

では、どうすればIDを抽出できますか? もっと説明してもらえますか?

jqueryなどを使用してすべてのplayerid / useridを取得します。可能かどうかをお知らせください

このページは役に立ちましたか?
0 / 5 - 0 評価