React-native-onesignal: рд╡рд░реНрддрдорд╛рди рдЦрд┐рд▓рд╛рдбрд╝реА рдЖрдИрдбреА/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдлрд╝рд░ре░ 2016  ┬╖  29рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: OneSignal/react-native-onesignal

рдХреНрдпрд╛ рдЖрдИрдУрдПрд╕ рдкрд░ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрддрдорд╛рди рд╡рдирд╕рд┐рдЧреНрдирд▓ рдпреВрдЬрд░ рдЖрдИрдбреА/рдкреНрд▓реЗрдпрд░рд┐рдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsрдЙрдкрд▓рдмреНрдзред

рдореБрдЭреЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд▓рдХреНрд╖реНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдкрд░ 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);
});

рдирд╡реАрдирддрдо рдкреИрдХреЗрдЬ рдкрд░ред

рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддреЗрдЬрд╝ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ! рд╢реБрдХреНрд░рд┐рдпрд╛!

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ ...
рдзрдиреНрдпрд╡рд╛рдж!

@avishayil рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ iOS рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛!

рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рд╕рдорд╛рдкрди рдореБрджреНрджрд╛ред

рдпрд╣ рдЖрдИрдУрдПрд╕/рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

@alejandrorbradford рдФрд░ рдпрд╣рд╛рдВ Google рдЦреЛрдЬ рдХреЗ рдмрд╛рдж рдпрд╣рд╛рдВ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ:

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.

рдореИрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдЖрдИрдбреА рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ред
рдореИрдВрдиреЗ OneSignal.idsAvailable рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред OneSignal.getUserId рд╕рд╛рде рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ "рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ" рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдкреНрд▓реЗрдпрд░ рдЖрдИрдбреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг 3.0.7 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЕрдм рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдЖрдкрдХреЛ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
````
рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ () {
OneSignal.addEventListener('ids', this.onIds);
}

рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдЕрдирдорд╛рдЙрдВрдЯ () {
OneSignal.removeEventListener('ids', this.onIds);
}

рдСрдирдЖрдИрдбреНрд╕ (рдбрд┐рд╡рд╛рдЗрд╕) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА:', рдбрд┐рд╡рд╛рдЗрд╕);
}
````

рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдЙрд╕ рдирдП рдСрдирдЖрдИрдбреАрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрднреА рднреА рдирд┐рдХрд╛рд▓ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡реЗрдм рдкреБрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрдпрд╛ "рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдирд╛" рд╕рдВрднрд╡ рд╣реИ?

@bhgames @jpmazza рдХреНрдпрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдЦрд┐рд▓рд╛рдбрд╝реА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛

рддреЛ, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (3.2.2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ () {
OneSignal.init(Config().pushId, {kOSSettingsKeyAutoPrompt: true});

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

}

async рдЕрдкрдбреЗрдЯрдкреБрд╢рдЖрдИрдб (рдбрд┐рд╡рд╛рдЗрд╕) {
рдкреЛрд╕реНрдЯJSON(UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{ 'рдкреНрд░рд╛рдзрд┐рдХрд░рдг': this.props.authentication_token }
);
};

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

@bhgames рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рджред
OneSignal.configure() рдиреЗ рдЪрд╛рд▓ рдЪрд▓реАред рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ :|

рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬрд╛рдирдирд╛ рдЬрд░реВрд░реА рдерд╛ред рдЗрд╕реАрд▓рд┐рдПред :P рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╡рд┐рдХрд╛рд╕ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╡рд┐рдХрд╛рд╕ рд╣реИред

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

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ? рдореИрдВ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдкреНрд▓реЗрдпрд░ рдЖрдИрдбреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдореВрд╣ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдмреЗрдХрд╛рд░ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ рдкреНрд▓реЗрдпрд░ рдЖрдИрдбреА рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореЗрд░рд╛ рдРрдк 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(callback) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдХрд╣рд╛рдБ? рдФрд░ рдХреИрд╕реЗ ? рдФрд░ рдореИрдВ рдкреНрд▓реЗрдпрд░ рдЖрдИрдбреА рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░реВрдВ? рдХреГрдкрдпрд╛ рдХреЛрдИ рдорджрдж рдХрд░реЗрдВ

@davekedar рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ ionViewDidLoad() рдореЗрдВ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

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

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ; рдЗрд╕реЗ рдорд╛рд░ рджреЗрдВред

рдзрдиреНрдпрд╡рд╛рдж @ рдХреЗрдиреЗрдл

рдХреЗрд╡рд▓ 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 рдЖрдкрдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреНрдпрд╛ рд╣реИ?

рд╣реИрд▓реЛ рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд╡рд┐рдХрдмреНрд▓реЙрдХреНрд╕ рдбрд╛рдпрд▓реЙрдЧ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдбрд╛рдпрд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡рд┐рдХрдмреНрд▓реЙрдХреНрд╕ рдпреВрдЬрд░рдЖрдИрдбреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВ?

рдХреЗрд╡рд▓ 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);
  }

рддреЛ, рдЖрдк рдЖрдИрдбреА рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдФрд░ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

Jquery рдФрд░ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝реА/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

carloscuesta picture carloscuesta  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cfmitrah picture cfmitrah  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

suupham2506 picture suupham2506  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mtt87 picture mtt87  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ilyakar picture ilyakar  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ