React-native-onesignal: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдХреНрддреВре░ 2017  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: OneSignal/react-native-onesignal

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ PushNotificationIOS рдореЙрдбреНрдпреВрд▓ рдореЗрдВ getInitialNotification() рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдРрдк рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдк рдХреА рдЧрдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (рдпрджрд┐ рдХреЛрдИ рдерд╛)ред рдХреНрдпрд╛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ?

рдЬрдм рдРрдк рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреА рддреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ Device info: рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ 3:
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдЕрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП onOpened рдИрд╡реЗрдВрдЯ рдирд╣реАрдВ рджреЗрдЦ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред

2 рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рд╕реЗ рдореИрдВ onOpened рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╢реНрд░реЛрддрд╛ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рд▓реЙрдиреНрдЪ рдкрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдореЗрд░рд╛ рдРрдк рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ , рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдХреА рдордирдорд╛рдиреА рдЕрд╡рдзрд┐ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕ рдШрдЯрдирд╛ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрдк рдХреЛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдореБрдЭреЗ рдПрдХ рд▓реЗрдЦ рдорд┐рд▓рд╛ рдЬреЛ OneSignal.configure() рдФрд░ onNotificationOpened рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ OneSignal.configure() рдЕрдм рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?

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

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд/рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ https://github.com/geektimecoil/react-native-onesignal/issues/206 , https://github.com/geektimecoil/react-native-onesignal/issues/195 , https://github.com/geektimecoil/react-native-onesignal/issues/191 , https://github.com/geektimecoil/react-native-onesignal/issues/336 , https://github.com/geektimecoil/ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-onesignal/рдореБрджреНрджреЛрдВ/334 , https://github.com/geektimecoil/react-native-onesignal/issues/264 , https://github.com/geektimecoil/react-native-onesignal/issues/279ред

рдпреЗ рд╕рднреА рдореБрджреНрджреЗ opened рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рдЖрдк рдРрдк рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкрд░ рдЯреИрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдРрдк рдЙрд╕ рд╕рдордп рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдореЗрдВ рдЬреЛ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рджреЗрд░реА рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдпрд╛рдиреА OneSignal.addEventListener('opened', this.onOpened); рдХреЛ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдРрдк рд╕реНрд╡рдпрдВ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рднреАрддрд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП constructor рдпрд╛ componentWillMount рдпрд╛ componentDidMount рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ), рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рддрдм рддрдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░/рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЖрдкрдХрд╛ Redux рд╕реНрдЯреЛрд░, рдЖрджрд┐ .. рдФрд░ рдЗрд╕ рджреЗрд░реА рдХреЗ рдХрд╛рд░рдг, рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдИрд╡реЗрдВрдЯ рд╕реНрд╡рдпрдВ (рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рд┐рдЧреНрдирд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рдШрдЯрдирд╛ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реБрдЖред рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ ids рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╣реЛ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдИрд╡реЗрдВрдЯ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХрд░рдг рдХреЛрдб рдХреЛ рдЕрдкрдиреА index.ios.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдпрд╛ рдЕрдкрдиреА App.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдкрдХреА index.ios.js рдлрд╝рд╛рдЗрд▓ рдмрд╕ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реА рд╣реЛ App рдШрдЯрдХ рдФрд░ рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ ( AppRegistry.registerComponent рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕реЗрдЯ рдЕрдк рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рдЖрдк рдЙрд╕ рдШрдЯрдирд╛ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдРрдк рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ Redux, рдпрд╛ рдЖрдк redux-persist, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдореЗрд░реА App.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ App рдШрдЯрдХ рдШреЛрд╖рд┐рдд рдХрд░ рджреВрдВ), рдФрд░ рдлрд┐рд░ рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдореЗрд░рд╛ Redux рд╕реНрдЯреЛрд░ (рдЬрд┐рд╕рдореЗрдВ redux-persist рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд╕реНрдЯреЛрд░ рдХреЗ рдкреБрдирд░реНрдЬрд▓реАрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ), рдореИрдВ рдПрдХ рдкреЗрд▓реЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрддрд╛ рд╣реВрдВ (рдпрджрд┐ рдХреЛрдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА), рдФрд░ рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдирдИ рдШрдЯрдирд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдореЗрд░реЗ App рдШрдЯрдХ рдкрд░ рд╣реА рд╢реНрд░реЛрддрд╛ (рдпреЗ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рднреА рдХреЗрд╡рд▓ рдореЗрд░реЗ Redux рд╕реНрдЯреЛрд░ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдИрдбреА рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреЗрд▓реЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрддреЗ рд╣реИрдВ)ред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╣реИрдХреА рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡рдирд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдЕрдк рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗред рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ opened рдШрдЯрдирд╛), рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд рддрдм рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдпрджрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдШрдЯрдирд╛ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░, рдЬреИрд╕реЗ рд╣реА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдРрдк рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдРрдк рдХреЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ 1-2 рд╕реЗрдХрдВрдб рдмрд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдЬреИрд╕реЗ рд╣реА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдЖрдкрдХреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЛ рдШрдЯрдирд╛рдПрдВ рд╣реБрдИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдШрдЯрдирд╛)ред

рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдРрдк рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдЯреИрдк рдХрд┐рдпрд╛ рдерд╛, getInitialNotification() рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ PushNotificationIOS рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдРрдк рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдк рдХрд┐рдпрд╛ рдерд╛ (рдпрд╛ null рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖ)ред рд▓реЗрдХрд┐рди рднрд▓реЗ рд╣реА рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд╡рдирд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ (рдЬреИрд╕реЗ ids рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЗрд╕ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк рджреНрд╡рд╛рд░рд╛ рдШрдЯрдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд/рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ https://github.com/geektimecoil/react-native-onesignal/issues/206 , https://github.com/geektimecoil/react-native-onesignal/issues/195 , https://github.com/geektimecoil/react-native-onesignal/issues/191 , https://github.com/geektimecoil/react-native-onesignal/issues/336 , https://github.com/geektimecoil/ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-onesignal/рдореБрджреНрджреЛрдВ/334 , https://github.com/geektimecoil/react-native-onesignal/issues/264 , https://github.com/geektimecoil/react-native-onesignal/issues/279ред

рдпреЗ рд╕рднреА рдореБрджреНрджреЗ opened рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рдЖрдк рдРрдк рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкрд░ рдЯреИрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдРрдк рдЙрд╕ рд╕рдордп рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдореЗрдВ рдЬреЛ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рджреЗрд░реА рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдпрд╛рдиреА OneSignal.addEventListener('opened', this.onOpened); рдХреЛ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдРрдк рд╕реНрд╡рдпрдВ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рднреАрддрд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП constructor рдпрд╛ componentWillMount рдпрд╛ componentDidMount рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ), рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рддрдм рддрдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░/рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЖрдкрдХрд╛ Redux рд╕реНрдЯреЛрд░, рдЖрджрд┐ .. рдФрд░ рдЗрд╕ рджреЗрд░реА рдХреЗ рдХрд╛рд░рдг, рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдИрд╡реЗрдВрдЯ рд╕реНрд╡рдпрдВ (рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рд┐рдЧреНрдирд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рдШрдЯрдирд╛ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реБрдЖред рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ ids рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╣реЛ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдИрд╡реЗрдВрдЯ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХрд░рдг рдХреЛрдб рдХреЛ рдЕрдкрдиреА index.ios.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдпрд╛ рдЕрдкрдиреА App.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЖрдкрдХреА index.ios.js рдлрд╝рд╛рдЗрд▓ рдмрд╕ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реА рд╣реЛ App рдШрдЯрдХ рдФрд░ рдЗрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ ( AppRegistry.registerComponent рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕реЗрдЯ рдЕрдк рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рдЖрдк рдЙрд╕ рдШрдЯрдирд╛ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдРрдк рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ Redux, рдпрд╛ рдЖрдк redux-persist, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдореЗрд░реА App.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЪрд░ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ App рдШрдЯрдХ рдШреЛрд╖рд┐рдд рдХрд░ рджреВрдВ), рдФрд░ рдлрд┐рд░ рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдореЗрд░рд╛ Redux рд╕реНрдЯреЛрд░ (рдЬрд┐рд╕рдореЗрдВ redux-persist рджреНрд╡рд╛рд░рд╛ рдореЗрд░реЗ рд╕реНрдЯреЛрд░ рдХреЗ рдкреБрдирд░реНрдЬрд▓реАрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ), рдореИрдВ рдПрдХ рдкреЗрд▓реЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрддрд╛ рд╣реВрдВ (рдпрджрд┐ рдХреЛрдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдереА), рдФрд░ рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдирдИ рдШрдЯрдирд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдореЗрд░реЗ App рдШрдЯрдХ рдкрд░ рд╣реА рд╢реНрд░реЛрддрд╛ (рдпреЗ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рднреА рдХреЗрд╡рд▓ рдореЗрд░реЗ Redux рд╕реНрдЯреЛрд░ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдИрдбреА рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреЗрд▓реЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬрддреЗ рд╣реИрдВ)ред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╣реИрдХреА рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡рдирд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдЕрдк рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗред рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ opened рдШрдЯрдирд╛), рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд рддрдм рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдпрджрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдШрдЯрдирд╛ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░, рдЬреИрд╕реЗ рд╣реА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдРрдк рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ Redux рд╕реНрдЯреЛрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдРрдк рдХреЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ 1-2 рд╕реЗрдХрдВрдб рдмрд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдЬреИрд╕реЗ рд╣реА рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдЖрдкрдХреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЛ рдШрдЯрдирд╛рдПрдВ рд╣реБрдИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓реА рдЧрдИ рдШрдЯрдирд╛)ред

рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдРрдк рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдЯреИрдк рдХрд┐рдпрд╛ рдерд╛, getInitialNotification() рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ PushNotificationIOS рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдРрдк рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдк рдХрд┐рдпрд╛ рдерд╛ (рдпрд╛ null рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реБрдЖ)ред рд▓реЗрдХрд┐рди рднрд▓реЗ рд╣реА рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд╡рдирд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ (рдЬреИрд╕реЗ ids рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЗрд╕ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк рджреНрд╡рд╛рд░рд╛ рдШрдЯрдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ @jordanmkoncz , рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдиреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рднреЗрдЬреА рдереА? рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕реЗрдЯрдЕрдк рд╣реИ (redux-persist рдЖрджрд┐ ..)

@ccoeder рдЬрд╝рд░реВрд░, рдпрд╣рд╛рдБ рдореЗрд░реА рд╡рд░реНрддрдорд╛рди App.js рдлрд╝рд╛рдЗрд▓ рд╣реИред

import React, { Component } from 'react';
import { Provider } from 'react-redux';
import OneSignal from 'react-native-onesignal';
import isNil from 'lodash/isNil';
import configureStore from '../redux/configureStore';
import {
  pushNotificationIdsReceived,
  pushNotificationOpened,
  pushNotificationReceived,
  pushNotificationRegistered,
} from '../redux/actionCreators';
import AppNavigator from './AppNavigator';
import Blank from './Blank';

let openedPushNotificationResult = null;
let receivedPushNotification = null;
let receivedNotificationUserInfo = null;
let receivedIds = null;

const onOpened = openResult => {
  openedPushNotificationResult = openResult;
};

const onReceived = notification => {
  receivedPushNotification = notification;
};

const onRegistered = notificationUserInfo => {
  receivedNotificationUserInfo = notificationUserInfo;
};

const onIds = ids => {
  receivedIds = ids;
};

OneSignal.addEventListener('opened', onOpened);
OneSignal.addEventListener('received', onReceived);
OneSignal.addEventListener('registered', onRegistered);
OneSignal.addEventListener('ids', onIds);

class App extends Component {
  constructor() {
    super();

    this.state = {
      isStoreInitialised: false,
    };

    this.store = null;

    this.onOpened = this.onOpened.bind(this);
    this.onReceived = this.onReceived.bind(this);
    this.onRegistered = this.onRegistered.bind(this);
    this.onIds = this.onIds.bind(this);
  }

  componentDidMount() {
    this.store = configureStore(store => {
      if (!isNil(openedPushNotificationResult)) {
        store.dispatch(pushNotificationOpened(openedPushNotificationResult));
      }

      if (!isNil(receivedPushNotification)) {
        store.dispatch(pushNotificationReceived(receivedPushNotification));
      }

      if (!isNil(receivedNotificationUserInfo)) {
        store.dispatch(pushNotificationRegistered(receivedNotificationUserInfo));
      }

      if (!isNil(receivedIds)) {
        store.dispatch(pushNotificationIdsReceived(receivedIds));
      }

      OneSignal.addEventListener('opened', this.onOpened);
      OneSignal.addEventListener('received', this.onReceived);
      OneSignal.addEventListener('registered', this.onRegistered);
      OneSignal.addEventListener('ids', this.onIds);

      OneSignal.removeEventListener('opened', onOpened);
      OneSignal.removeEventListener('received', onReceived);
      OneSignal.removeEventListener('registered', onRegistered);
      OneSignal.removeEventListener('ids', onIds);

      this.setState({ isStoreInitialised: true });
    });
  }

  componentWillUnmount() {
    OneSignal.removeEventListener('opened', this.onOpened);
    OneSignal.removeEventListener('received', this.onReceived);
    OneSignal.removeEventListener('registered', this.onRegistered);
    OneSignal.removeEventListener('ids', this.onIds);
    OneSignal.removeEventListener('opened', onOpened);
    OneSignal.removeEventListener('received', onReceived);
    OneSignal.removeEventListener('registered', onRegistered);
    OneSignal.removeEventListener('ids', onIds);
  }

  onOpened(openResult) {
    this.store.dispatch(pushNotificationOpened(openResult));
  }

  onReceived(notification) {
    this.store.dispatch(pushNotificationReceived(notification));
  }

  onRegistered(notificationUserInfo) {
    this.store.dispatch(pushNotificationRegistered(notificationUserInfo));
  }

  onIds(ids) {
    this.store.dispatch(pushNotificationIdsReceived(ids));
  }

  render() {
    if (!this.state.isStoreInitialised) {
      return <Blank />;
    }

    return (
      <Provider store={this.store}>
        <AppNavigator />
      </Provider>
    );
  }
}

export default App;

рдиреЛрдЯ: configureStore рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдореЗрд░рд╛ Redux рд╕реНрдЯреЛрд░ рдмрдирд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдЗрд╕реЗ createStore() рдХрд╣рддреЗ рд╣реИрдВ), рдлрд┐рд░ redux-persist (рдпрд╛рдиреА рдпрд╣ persistStore() рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред configureStore рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ, рдФрд░ onComplete persistStore рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдореИрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ configureStore рдкрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдЯреЛрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯред рдЕрдВрдд рдореЗрдВ, configureStore рд╕реНрдЯреЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ, рдореИрдВ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдореЗрд░рд╛ рд╕реНрдЯреЛрд░ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдкреБрдирд░реНрдЬрд▓реАрдХрд░рдг рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рднреЗрдЬрддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдирдП рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВред

@jordanmkoncz рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдкрд╣рд▓реЗ рддреЛ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореЗрд░реА рднреА рдЖрдкрдХреЗ рдЬреИрд╕реА рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдореМрди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрджрд┐ рдЖрд╡реЗрджрди рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ @ccoederред рд╣рд╛рдБ рдРрдк рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдПрдХ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрдк рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдРрдк рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдРрдк рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЯреИрдк рдХреА рдереА (рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рдерд╛)ред

рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-fcm рдХрд░рддрд╛ рд╣реИ, getInitialNotification рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ

@jordanmkoncz рдЖрдкрдХреА рдкреЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдЬрдм рдРрдк рдХреЛ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рддреЛ рд╕реНрдХреНрд░реАрди рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреА рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЦреЛрд▓рддреЗ рд╕рдордп, рдпрд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреБрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдорд╛рдЙрдВрдЯ () {
OneSignal.addEventListener ('рдкреНрд░рд╛рдкреНрдд', this._onReceived);
OneSignal.addEventListener('opened', this._onOpened);
}
рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдЕрдирдорд╛рдЙрдВрдЯ () {
OneSignal.removeEventListener('Received', this.__onReceived);
OneSignal.removeEventListener('opened', this._onOpened);
}
_onRecevied (рдЕрдзрд┐рд╕реВрдЪрдирд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ:', рдЕрдзрд┐рд╕реВрдЪрдирд╛); // рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
this.props.navigator.push ({рдкреБрд╢рд╕реНрдХреНрд░реАрди, рдкрд╛рд╕рдкреНрд░реЙрдкреНрд╕: {рдкрд░рдореНрд╕}}); // рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
}
_onOpened(openResult) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдирд┐рдХрд╛рдп:', openResult.notification.payload.body); // рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
this.props.navigator.push ({рдкреБрд╢рд╕реНрдХреНрд░реАрди, рдкрд╛рд╕рдкреНрд░реЙрдкреНрд╕: {рдкрд░рдореНрд╕}}); // рдХрд╛рдо рдирд╣реАрдВ рдХрд░
}

рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж

рд╣рдореНрдо .. рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ Redux Provider рдХреЗ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░рд╛ PushNotificationHelper рдШрдЯрдХ рд╣реИ, рдЬреЛ store рдХреЗ рдкреБрдирд░реНрдЬрд▓реАрдХрд░рдг рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

componentWillMount() {
    AppState.addEventListener("change", this.handleAppStateChange);
    OneSignal.configure({
      onNotificationOpened: this.handleOpenNotification
    });
    OneSignal.addEventListener("received", this.onReceived);
    OneSignal.addEventListener("opened", this.onOpened);
    OneSignal.addEventListener("registered", this.onRegistered);
    OneSignal.addEventListener("ids", this.onIds);

    if (!IOS) {
      OneSignal.inFocusDisplaying(0);
    }
  }

  componentWillUnmount() {
    AppState.removeEventListener("change", this.handleAppStateChange);
    OneSignal.removeEventListener("received", this.onReceived);
    OneSignal.removeEventListener("opened", this.onOpened);
    OneSignal.removeEventListener("registered", this.onRegistered);
    OneSignal.removeEventListener("ids", this.onIds);
  }

handleOpenNotification = (message, data, isActive) => {
    console.log("Notification", message, data, isActive);

    if (isActive) {
      // touchable banner displaying info from push notification
    } else {
      // act on data received from push notification
    }
  };

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

рднрд▓реЗ рд╣реА рдореЗрд░рд╛ рдРрдк рдмрдВрдж рд╣реЛ - background рдРрдкрд╕реНрдЯреЗрдЯ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж - рдЕрдЧрд░ рдореИрдВ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ onOpened рд╡рд┐рдзрд┐ рдХреЛ openResult рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛, рдФрд░ рдореИрдВ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ dispatch рд░реЗрдбрдХреНрд╕ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реВрдВред

@wkoutre рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпрд╛ рдЖрдк react-native , react-native-onesignal рдЖрджрд┐ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЯреИрдк рдХрд░рдХреЗ рдРрдк рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕ рд╕рдордп рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЯреИрдк рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдРрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреА onOpened рд╡рд┐рдзрд┐ рдХреЛ 100% рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЖрдк рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА 100% рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ PushNotificationHelper рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рджреЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░рдХреЗ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдк рд░рд╛рдЬреНрдп рдореЗрдВ рдХреБрдЫ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ PushNotificationHelper рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЗрд╕рдХреЗ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ OneSignal рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ?

@jordanmkoncz

"react-native": "0.50.4"
"react-native-onesignal": "^3.0.7"

рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рдВред рджреЛрдиреЛрдВ рдкрд░, 100% рд╕рдордп:

  • рдРрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реИ
  • рдкреБрд╢ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ
  • рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЯреИрдк рдХреА рдЧрдИ рд╣реИ
  • рдРрдк рд▓реЛрдб
  • onOpened рдХреЛ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ openResult.notification.isAppInFocus === false

рдореИрдВ setTimeout рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЖрдкрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдБрдЧрд╛ред


EDIT1: рдореИрдВрдиреЗ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛, рдФрд░ рдЕрдм рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ 100% рд╕рдордп рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред


EDIT2: setTimeout рд╡рд┐рд▓рдВрдм рдХрд░рдиреЗ рд╕реЗ onOpened рдПрдХ рдкреБрд╢ рд╕реВрдЪрдирд╛ рдХреЛ рдЯреИрдк рдХрд░рдиреЗ рд╕реЗ рдРрдк рд▓реЛрдб рдкрд░ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реБрдЖред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ App.js рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ - рдореЗрд░рд╛ рдореВрд▓ рдШрдЯрдХ index.ios.js рдФрд░ index.android.js рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ - рдФрд░ onOpened рдХреЛ 100% рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рдордп рдХрд╛, рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ ~ 50% рд╕рдордпред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрд╕рдВрдЧрдд рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдЬрдм рдРрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрддреА рд╣реИ, рддреЛ рдбреАрдмрдЧрд░ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ App.js рдореЗрдВ рд╕рдм рдХреБрдЫ рддрдм рддрдХ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдХрдХреНрд╖рд╛ рдирд╣реАрдВ рдмрдирд╛ рджреЗрддрд╛ред

const IOSX = HEIGHT === 812 && PLATFORM === "ios";

const wrapperStyle = [Styles.flex1];
if (IOSX) wrapperStyle.push(Styles.backgroundDarkGray);

let SPLASH_TIME;

console.log(`Change to TRUE below to reset store state`);

const PURGE = DEV ? false : false;

if (DEV) SPLASH_TIME = 4000;
else SPLASH_TIME = 4000;

// const composeEnhancers = composeWithDevTools({
//   realtime: true,
//   port: 8000
// });

const composeEnhancers =
  typeof window === "object" &&
  window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
  DEV
    ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
        // Specify extensionтАЩs options like name, actionsBlacklist, actionsCreators, serialize...
      })
    : compose;

const middlewares = [ReduxThunk];

// debugging tooling
// if (DEV) {
//   // add logger
// middlewares.push(logger)

//   // middlewares = [...middlewares, logger];
//   middlewares = [...middlewares];

// replace these transient reducers when they've been created

export const store = createStore(
  Reducers,
  {},
  composeEnhancers(
    applyAppStateListener(),
    applyMiddleware(...middlewares),
    autoRehydrate()
  )
);

// if (module.hot) {
//   // Enable hot module replacement for reducers
//   module.hot.accept(() => {
//     const nextRootReducer = require("./reducers/index").default;
//     store.replaceReducer(nextRootReducer);
//   });
// }

console.log(`right before APP`);

// Debugger logs everything before this line.

export default class App extends Component {
    ...
}

@jordanmkoncz рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ: https://github.com/wix/react-native-notifications

рдареАрдХ рд╣реИ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рдЬреЛ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░ 100% рд╕рдордп рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ App.js рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рдРрдк рдШрдЯрдХ рдШреЛрд╖рд┐рдд рдХрд░реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

const handleOnOpened = openResult => {
  store.dispatch(setInitialNotification(openResult));
};

OneSignal.configure({});
OneSignal.addEventListener("opened", handleOnOpened);

... рдЬрд╣рд╛рдВ setInitialNotification рдПрдХ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рд╣реИред

рдлрд┐рд░, рдЬрдм рдореЗрд░рд╛ (рдЕрдм рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдРрдк рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯрд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ:

this.setState({ rehydrated: true }, () => {
          OneSignal.removeEventListener("opened", handleOnOpened);
        });

рдорд╛рдИ рдРрдк - рдПрдХ рд░реЗрдбрдХреНрд╕ Provider рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ - рдлрд┐рд░ render рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ ...

<Provider store={store}>
        <IphoneXAwareView style={wrapperStyle}>
          <StatusBar hidden={false} barStyle="light-content" />
          <MyAlert />
          <Loading />
          <ConnectedAppWithNavigationState />
          <PushNotificationHelper />
        </IphoneXAwareView>
      </Provider>

рд╡рд╣рд╛рдВ рд╕реЗ, PushNotificationHelper рдШрдЯрдХ рд╕рднреА рдкреБрд╢ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдФрд░ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@bhop рдпрд╣ рдХреБрдЫ рдорд╣реАрдиреЗ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдПрдХ рдлрд┐рдХреНрд╕ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди ... рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВред

@wkoutre рдХреНрдпрд╛ рдЖрдк рд░реАрдбрдореА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд░реЗрдбрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИ?

@avishayil рдЬрд╝рд░реВрд░ред рдореИрдВ рдЗрд╕реЗ рдЖрдЬ рд╢рд╛рдо рддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реВрдВрдЧрд╛

рдЕрд╡рд┐рд╢реИрд▓ рдкреАрдЖрд░ рдиреЗ рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рд▓рдЧрддреА рд╣реИред рдЬрдм рдРрдк рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рднреА рдХреЙрд▓рдмреИрдХ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рдкреБрд╢ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рдРрдк рдЖрдЗрдХрди +1 рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдмреИрдирд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдмреИрдирд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ (рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдмреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ) рдХреЙрд▓рдмреИрдХ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ = [рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЛ ?

  • рдПрдХреНрд╕рдкреЛ рдбрд┐рдЯреИрдЪ рдРрдк
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16.3.1
  • рд╡рдирд╕рд┐рдЧреНрдирд▓ 3.2.5
  • рдПрдХреНрд╕рдкреЛ 27.0.1

@brunoandradebr рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдРрдк рдЖрдЗрдХрди рд╕реЗ рдРрдк рдЦреЛрд▓рдирд╛ рдХрднреА рднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рд╕реВрдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдРрдк рдЦреЛрд▓рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЛрдИ рд╕реВрдЪрдирд╛ рдорд┐рд▓реА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдЬрдм рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрдм рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдореЗрдореЛрд░реА (рд╕реНрд╡рд╛рдЗрдк) рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддрдм рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдХреЛрдб рдРрдк рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдУрдСрдирд╕рд┐рдЧреНрдирд▓ рд▓рд┐рдм рд▓рд┐рдВрдХ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

@brunoandradebr рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЖрдк рдХрд┐рд╕ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрджрд┐ рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ received рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЛ рдирд╣реАрдВ рд╕реБрди рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдХ рдРрдк рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП), рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬрдм рдореИрдВ рдРрдк рдХреЛ рдорд╛рд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдРрдк рдХреЙрд▓рдмреИрдХ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдХреЙрд▓рдмреИрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЧ рд▓рдЧрддреА рд╣реИред рд╕рдордЭ рд▓рд┐рдпрд╛ ?

@brunoandradebr рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ рддреЛ рдпрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд░реЗрдкреЛ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

@jordanmkoncz рдЖрдкрдХреЛ рджреЗрд╢реА onesignal рдореБрджреНрджреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╕рдордЭ рд╣реИред рдореИрдВ рдЬрд┐рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрдирдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡рдирд╕рд┐рдЧреНрдирд▓: ^ 3.2.8 рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.56.0ред рдореИрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рдРрдк рдмрдВрдж рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЯреИрдк рдХреА рдЧрдИ рд╣реИред рдРрдк рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рддрдм рддрдХ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рддреА рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рдмрдВрдж рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рддреЗред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╡рдирд╕рд┐рдЧреНрдирд▓ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдФрд░ рдЕрдм рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрдврд╝рд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ index.js рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдореБрдЦреНрдп рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдЯреИрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП App.js рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

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

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

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

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

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

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

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