рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 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
рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЗрд╕ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк рджреНрд╡рд╛рд░рд╛ рдШрдЯрдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдирдорд╕реНрддреЗ @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 рдмрдврд╝рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдмреИрдирд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдмреИрдирд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ (рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдмреИрдирд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ) рдХреЙрд▓рдмреИрдХ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ = [рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯреЛ ?
@brunoandradebr рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдРрдк рдЖрдЗрдХрди рд╕реЗ рдРрдк рдЦреЛрд▓рдирд╛ рдХрднреА рднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рд╕реВрдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдРрдк рдЦреЛрд▓рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдРрдк рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЛрдИ рд╕реВрдЪрдирд╛ рдорд┐рд▓реА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдЬрдм рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрдм рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЬрдм рдореИрдВ рдЗрд╕реЗ рдореЗрдореЛрд░реА (рд╕реНрд╡рд╛рдЗрдк) рд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддрдм рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдХреЛрдб рдРрдк рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдУрдСрдирд╕рд┐рдЧреНрдирд▓ рд▓рд┐рдм рд▓рд┐рдВрдХ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
@brunoandradebr рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЖрдк рдХрд┐рд╕ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрджрд┐ рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ received
рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЛ рдирд╣реАрдВ рд╕реБрди рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдХ рдРрдк рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП), рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЬрдм рдореИрдВ рдРрдк рдХреЛ рдорд╛рд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╣реЛрддреА рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдРрдк рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдРрдк рдХреЙрд▓рдмреИрдХ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдХреЙрд▓рдмреИрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЧ рд▓рдЧрддреА рд╣реИред рд╕рдордЭ рд▓рд┐рдпрд╛ ?
@brunoandradebr рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ рддреЛ рдпрд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рд╕реЗ рд╣рдЯрдХрд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд░реЗрдкреЛ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
@jordanmkoncz рдЖрдкрдХреЛ рджреЗрд╢реА onesignal рдореБрджреНрджреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╕рдордЭ рд╣реИред рдореИрдВ рдЬрд┐рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрдирдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡рдирд╕рд┐рдЧреНрдирд▓: ^ 3.2.8 рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.56.0ред рдореИрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рдРрдк рдмрдВрдж рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЯреИрдк рдХреА рдЧрдИ рд╣реИред рдРрдк рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рддрдм рддрдХ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рддреА рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рдмрдВрдж рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд░рддреЗред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╡рдирд╕рд┐рдЧреНрдирд▓ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдФрд░ рдЕрдм рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрдврд╝рд╛ рд╣реИ рдЬреЛ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ index.js рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдореБрдЦреНрдп рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдЯреИрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП App.js рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рдХреБрдЫ рд╕рдВрдмрдВрдзрд┐рдд/рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ 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
рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИредрддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдЗрд╕ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк рджреНрд╡рд╛рд░рд╛ рдШрдЯрдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред