์๋ ํ์ธ์ ์ ๋ Main.js์ ํฌํจ๋ OneSignalController๊ฐ ์์ต๋๋ค.
class OneSignalController extends Component {
props: Props
constructor(props) {
super(props);
}
componentWillMount() {
OneSignal.addEventListener('opened', this.onOpened);
OneSignal.addEventListener('ids', this.onIds);
}
componentWillUnmount() {
OneSignal.removeEventListener('opened', this.onOpened);
OneSignal.removeEventListener('ids', this.onIds);
}
onIds = (device) => {
this.props.dispatch_set_device_id(device.userId);
}
render() {
return null;
}
}
redux-persist
ํ๊ณ rehydration
๊ฐ ์๋ฃ๋๊ธฐ ์ ์ ์ฑ์ ์์ํ๊ณ ์ถ์ง ์์ต๋๋ค.
๊ทธ๋์ ๋ด index.android.js
์์ ์ด๊ฒ์ ํ๊ณ ์ถ์ต๋๋ค.
...
this.state = { rehydrated: false };
}
componentWillMount() {
Storage.restoreData(store, {}, () => {
this.setState({ rehydrated: true });
});
}
render() {
return (
this.state.rehydrated === true
? <Provider store={store}>
<View style={styles.container}>
<Main />
</View>
</Provider>
: null
);
}
๊ทธ๋ฌ๋ ๋ด๊ฐ oneSignal์ ์ํํ๋ฉด ๋ ์ด์ onIds
๊ธฐ๋ฅ์ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค.
๋๋๋ก ํธ์ถ๋์ง ์๋ onIds์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ redux-persist์ ๊ด๋ จ์ด ์์ต๋๋ค.
OneSignal ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๊น? ๊ทธ๋ฌ๋ Doc์ ์ด์จ๋ null์ ๋ฐํํด์ผํ๋ค๊ณ ๋งํฉ๋๋ค. ๋ช ๋ฒ ์๋ํ ๋๋ง๋ค ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ ์ผ๊ด์ฑ์ด ์์ต๋๋ค. ์ด ์ด๋ฒคํธ๊ฐ ํ์ฌ ์ผ๋ง๋ ์ ๋ขฐํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ค๋ ์๋ฎฌ๋ ์ดํฐ์์ ๋ค์ ํ์ธํ๋๋ฐ OneSignal.requestPermissions()๋ฅผ ํตํด ๊ถํ์ ์๋ฝํ ํ "onIds" ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ 10์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค.
์๋ก ๊ณ ์นจ(๋ฐ๋ชจ ํ๋ก์ ํธ ๋์)ํ ๋๋ง๋ค ์ฌ์ ํ ID๋ฅผ ๋ฐ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฑ ๋ด์ ๋ค๋ฅธ ์์น์ ๋์ผํ ์ด๋ฒคํธ๋ฅผ ๋ฐฐ์นํ์ง๋ง ์ ํ ์๋ํ์ง ์์ต๋๋ค.
๋ํ ์ด๋ค ๊ฒฝ์ฐ์๋ ํธ๋ฆฌ๊ฑฐ๋์ง ์์ ์์ธ์ ๋ํ "๋ฑ๋ก๋" ์ด๋ฒคํธ๊ฐ ๋ฌด์์ธ์ง ๋ช ํํ์ง ์์ต๋๋ค.
์ฌ๋ฌ๋ถ, ์ฑ์ ๋ซ์๋ค๊ฐ ๋ค์ ์ด ๋ ์ด๋ฒคํธ๊ฐ ํธ์ถ๋์ง ์์ต๋๋ค. ID๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋งค๋ฒ ํธ๋ฆฌ๊ฑฐ๋์ด์ผ ํ์ง ์์ต๋๊น?
๋ค๋ฅธ ๋ฌธ์ ๋ ์ฌ์ฉ์๊ฐ ํธ์ ์๋ฆผ์ ์๋ฝํ ๋ 5๋ฒ ์ค 1๋ฒ(ํ๊ท ) ํธ๋ฆฌ๊ฑฐ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๊ฐ ๊ด์ฐฎ์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋์ง ์์ผ๋ฏ๋ก ๋ค์์ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ด ๋ ID๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ ์ด lib๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ๊ธฐ์์๋ redux-persist๋ฅผ ์ฌ์ฉํ์ธ์! ๊ทธ๋ฆฌ๊ณ ์ฝ๊ฐ์ ํ๊ธฐ ํ์ ๋๋ ๊ทธ๊ฒ์ด redux-persist์ ๊ด๋ จ ์ด ์๋ค๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ฏฟ์ต๋๋ค. ๋๋ ids
์ด๋ฒคํธ์ ๋ํ ์ง์ฐ๋ ๊ตฌ๋
.
๋ค์ ์ฝ๋๋ฅผ index.xxx.js
์ ๋ฐ๋ก ๋ฃ์ผ๋ฉด(์ฆ, ์ฑ ์์ ์ด๊ธฐ์) ์ฑ์ ๋ค์ ์์ํ ๋๋ง๋ค ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
//... other imports
import OneSignal from "react-native-onesignal";
OneSignal.addEventListener('ids', (device) => {
console.log("[OneSignal]>>ids: ", device);
});
// ....
AppRegistry.registerComponent ....
๊ทธ๋ฌ๋ redux-persist rehydration => ์ฝ๋ฐฑ์ ์๋ณ ์ธ์ฌ๋ฅผ ํ ํ OneSignal.addEventListener('ids' ...
๊ฐ ํธ์ถ๋๋ฉด.
FIX ๋ ํ์ฌ (ํ์ฌ react-native-onesignal ๋ฆด๋ฆฌ์ค 3.0.3) ์์ ํ ๋ฐฉ๋ฒ์ ๋๋ค.
ids
์ด๋ฒคํธ๋ฅผ js ์ธก์ผ๋ก ๋ค์ ๋ธ๋ก๋์บ์คํธํ๋๋ก ๋ค์ดํฐ๋ธ ์ธก( android ๋ฐ ios )์ ๋ง๋๋ OneSignal.configure()
๋ผ๋ ๋ฌธ์ํ๋์ง ์์ js ์ธก ๋ฉ์๋๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ 'ids'์ ๋ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ์งํ์ ํธ์ถํ์ญ์์ค.
// ... after store rehydration complete ...
OneSignal.addEventListener('ids', (device) => {
// ... do whatever with device
});
OneSignal.configure(); // add this to trigger `ids` event
๋ค์ดํฐ๋ธ ์ธก์์ ๊ตฌํ๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ด ํ๊ฐ์ ๋ฐ๋ฅด๋ฉด ๋ ๋ฒ ์ด์ ํธ์ถํ๋ ๊ฒ์ด ๋งค์ฐ ์์ ํ ๊ฒ ๊ฐ์ต๋๋ค(๋ด๋ถ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๋์ฒดํ๊ณ ๋ ์ด์ ์์ฑํ์ง ์์). ๊ทธ๋ฌ๋ ๋งค๋ฒ ids
๋ฆฌ์ค๋๋ฅผ ์คํํ๋ค๋ ์ ์ ๋ช
์ฌํ์ญ์์ค.
์ด์ ๋์ค์ ์ฑ ์์ ์ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ๋ ๋ค๋ฅธ ์ด๋ฒคํธ๊ฐ ์๋ํ๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ด๋ถ ๊ตฌ๋ ์ ๋๊ธฐ์ด์ด ์๋ react-native-onesignal lib์ ์ํด ์ด๊ฒ์ด ๋ ์ ์์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก์ด ์ง์ฐ๋๋ ์ด ์๋๋ฆฌ์ค์ ๋ํด ๊ฐ๊น์ด ์์ผ ๋ด์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ํํ ์ ์๋๋ก ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
OneSignal.configure()๋ฅผ ํธ์ถํ๋ฉด; ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ์ ์ด๊ฒ์ ์ ์๋ํฉ๋๋ค. ๊ทธ๊ฒ์ด redux-persist์ธ์ง์กฐ์ฐจ ํ์คํ์ง ์์ต๋๋ค.
๊ฐ๋จํ ์ฐธ๊ณ ์ฌํญ์ผ๋ก onIds ์ด๋ฒคํธ๊ฐ ์คํ๋์ง ์๋ ๋ถ๊ท์นํ ๋์์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด์ ์ฑ ์คํ์์ ์กฐ๊ธ ๋์ค์ ๋ก๋๋๋ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ๊ตฌ์ฑ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ๋๋๋ก ํ๋์ onIds ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ๋๋ก๋ ๋ ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค(์๋ ์ด๋ฒคํธ๊ฐ ๊ฐ๋ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์).
๋ฆด๋ฆฌ์ค ๋น๋์์ ์ด๊ฒ์ ํ ์คํธํ์ง ์์๊ณ ํ์ฌ Android, React Native 0.38์์ ๋๋ฒ๊น ์ค์ด๋ฉฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๊ฒ์ด redux ์ง์ ๋ฌธ์ ๋ผ๊ณ ์ ์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ค์ ๋ก ์ฌ๋ฌ ๋ฒ ๊ตฌ์ฑ์ ํธ์ถํ๋ ๋ฐ ๋ถ์ ์ ์ธ ์ํฅ์ด ์๋ค๋ฉด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๊ฐํ ๋๋ง๋ค ๋ด API๋ฅผ ๋ ๋ฒ ๋๋ฅด๋ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ์ต๋๋ค.
์ด ์์ ์ ์ํํ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ถ์ ์ ์ธ ๊ฒฐ๊ณผ๊ฐ ์๋ ๊ฒฝ์ฐ(๋นํจ์จ์ฑ ์ ์ธ) ์ด๊ฒ์ ์ ์๊ฒ ์ ๋ฌธ ๋ถ์ผ๊ฐ ์๋๋ฏ๋ก ์๋ ค์ฃผ์ญ์์ค.
์ ๋ ๊ฐ์ง๊ณ ์๊ณ ์์ฐ์ค์ ๋๋ค. ;) ์, API๋ฅผ ๋ ๋ฒ ํธ์ถํฉ๋๋ค. :(
์๋ ํ์ธ์ @edo1493 ์ ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. API๋ฅผ ๋ ๋ฒ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ฑ์ ๋ค์ ๋ก๋ํ์ง ์๊ณ (๊ฐ๋ฐ์ ๋ชจ๋) ์ด๋ฒคํธ๋ 35์ด ํ์๋ง ๋ฐ์ํฉ๋๋ค.
ํธ์งํ๋ค:
์ด๊ฒ์ ์ฑ์ ์ฒ์ ๋ก๋ํ ๋ ๋ฐ์ํฉ๋๋ค.
ํ๋ซํผ: ์๋๋ก์ด๋
์๋ง๋ @jkasten2 ๊ฐ ์ฌ๊ธฐ์์ ๋์์ ์ค ์ ์์ ๊ฒ์ ๋๋ค. ์ด ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@edo1493 onIds
๋ OneSignal ์๋ฒ์์ ํ๋ ์ด์ด/์ฌ์ฉ์ ID๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉด ์คํ๋์ง ์์ต๋๋ค. ์ฆ, userId
๋ null
๊ฐ ๋์ง ์์ง๋ง APN/FCM์ด ์ ์๊ฐ์ ์๋ตํ์ง ์์ผ๋ฉด pushToken
๊ฐ ๋ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ฐ๊ฒฐ๊ณผ ๊ด๋ จ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ๋คํธ์ํฌ ํธ์ถ ๊ธฐ๋ก์ ํ์ฑํํ๊ธฐ ์ํด ๋ค์ดํฐ๋ธ ์ฝ๋์์ setLogLevel
๋ฅผ ํธ์ถํ ์ ์์ต๋๊น? Android์์ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์๋ ๊ฒฝ์ฐ iOS์์ logcat๊ณผ Xcode ๋ก๊ทธ์์ ์ํ๋๋ ํธ์ถ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ์ฃผ๋ชฉํ ๋งํ ๋ฌธ์ ๋ redux-persist
์ ๊ด๋ จ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ์ด๋ OneSignal ํ๋ฌ๊ทธ์ธ์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณ์ธต์ ๋ฌธ์ ๋ฅผ ์๋ฏธํ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ต๋๋ค. @avishayil redux-persist
๋ฌธ์ ๋ฅผ ์ฌํํ๊ณ ๋ฌธ์ ๋ฅผ ์ ํํ ์ง์ ํด ์ฃผ์๊ฒ ์ต๋๊น? ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ๋ฉด ๋๋ฒ๊น
๋ ์๋ํ ์ ์์ต๋๋ค.
@jkasten2 ํ์ฌ ํ๋ก์ ํธ์์ redux-persist๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌํํ ์๊ฐ์ ์ฐพ๊ธฐ๊ฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ ์ฌ๋๋ค ์ค ํ ๋ช ์ด ๋ฌธ์ ๊ฐ ์ฌํ๋ redux-persist๋ฅผ ์ฌ์ฉํ์ฌ repo๋ฅผ ๊ณต์ ํ๋ฉด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
redux๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ ๋๋ค.
@rcugut ๊ฐ์ฌ OneSignal.configure()
์ฆ์ ์์ ํ์ธ์! ์ ๋ redux-persist
! ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค!
.configure๋ฅผ ์ถ๊ฐํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ผ๋ฏ๋ก react-persist๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋๋ฅผ ์ํด OneSignal.configure()
ํดํน๋ ์๋ํ์ง๋ง OneSignal.removeEventListener("ids", this.onIds)
๊ฐ ์๋ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๊ฒ์ด ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
@junedomingo์ ๊ฐ์ ์ผ์ ์ง๋ฉด
Android์์๋ ์ฑ์ ์ฒ์ ๋ก๋ํ ๋ 35์ด ํ์ ids ์ด๋ฒคํธ๊ฐ ํธ์ถ๋ฉ๋๋ค.
Android์์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ์ด๋ฒคํธ๋ ๋ฌธ์ ์์ด ์คํ๋ฉ๋๋ค.
ํ์ง๋ง onIds()
๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋ iOS์์ ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ํ์ OneSignal.configure()
๋ฅผ ์ถ๊ฐํ๊ณ ์๋ถ ๋ณด์ถฉ์ด ์๋ฃ๋๊ธฐ ์ ์ด๋ ํ์(์, redux-persist
) ๋์์ด ๋์ง ์์์ต๋๋ค.
๋๊ตฌ ์์ด๋์ด๊ฐ ์์ต๋๊น?
@jkasten2 ids ๋ฆฌ์ค๋์ ๋ํด @junedomingo๊ฐ ์ฌ๊ธฐ์์ ์ธ๊ธํ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋์ด ๋ฐฉ๋ฒ์ ์ธ๋ถ์ ๋ด๋ถ์ ๋ก๊ทธ๋ฅผ ๋ฃ์์ต๋๋ค.
OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
public void idsAvailable(String userId, String registrationId) {
final WritableMap params = Arguments.createMap();
params.putString("userId", userId);
params.putString("pushToken", registrationId);
sendEvent("OneSignal-idsAvailable", params);
}
});
30์ด ํ์ ์๋ตํฉ๋๋ค!
์ด๋ค ์์ด๋์ด/์๋ฃจ์
์ด ์์ต๋๊น?
OneSignal.setRequiresUserPrivacyConsent(true)๊ฐ ์๋ ๊ฒฝ์ฐ;
๋์ํ ๋๊น์ง ์๋ํ์ง ์์ต๋๋ค!
OneSignal.provideUserConsent(true);
๋ํ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ํ OneSignal.configure()๋ฅผ ํธ์ถํฉ๋๋ค.
ํฌ๋ง์ด ๋น์ ์ ์ํด ์ผํฉ๋๋ค!!!
๊ฐ์ ๋ฌธ์
๋ฒ์ : v3.3.1
ํ๋ซํผ: iOS
์ฌ๊ธฐ์์ ๋ณผ ์ ์๋ฏ์ด userId๋ null์ด๋ฉฐ 29์ด ํ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ userId๋ก ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์ฑ์ ์๋ก ์ค์นํ ํ ์ฒ์ ์คํํ ๋์
๋๋ค.
์์ง๋ ์ด ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น?
์ด๋ฒคํธ๋ Android์ ํด๋ฆฌ์ด ๋ถํ
์์ ~30์ด ํ์๋ง ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
@damathryx ์๋ ํ์ธ์, ์ ๋ ์ฒซ ๋ฒ์งธ ์ถ์ ๋ฌธ์ ์์ ๋์ผํ userId null์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ผ์ จ์ต๋๊น?
์ด ๋ฌธ์ ๋ ๋ค์ ์ด์ด์ผ ํฉ๋๋ค ๐ฉ
๋๋ฅผ ์ํด ํธ์ ์๋ฆผ์ .configure
์์ด Android์์ ์ค์ง ์์ต๋๋ค. ์ด์ ID๊ฐ ์ ๋๋ก ํธ๋ฆฌ๊ฑฐ๋๊ณ ์ฅ์น ์ ๋ณด๊ฐ ์์ ๋์ง๋ง ์๋ฆผ ์์ฒด๊ฐ ์๋ํ์ง ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฉ๊ธ ์ด lib๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ๊ธฐ์์๋ redux-persist๋ฅผ ์ฌ์ฉํ์ธ์! ๊ทธ๋ฆฌ๊ณ ์ฝ๊ฐ์ ํ๊ธฐ ํ์ ๋๋ ๊ทธ๊ฒ์ด redux-persist์ ๊ด๋ จ ์ด ์๋ค๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ฏฟ์ต๋๋ค. ๋๋
ids
์ด๋ฒคํธ์ ๋ํ ์ง์ฐ๋ ๊ตฌ๋ .๋ค์ ์ฝ๋๋ฅผ
index.xxx.js
์ ๋ฐ๋ก ๋ฃ์ผ๋ฉด(์ฆ, ์ฑ ์์ ์ด๊ธฐ์) ์ฑ์ ๋ค์ ์์ํ ๋๋ง๋ค ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.๊ทธ๋ฌ๋ redux-persist rehydration => ์ฝ๋ฐฑ์ ์๋ณ ์ธ์ฌ๋ฅผ ํ ํ
OneSignal.addEventListener('ids' ...
๊ฐ ํธ์ถ๋๋ฉด.FIX ๋ ํ์ฌ (ํ์ฌ react-native-onesignal ๋ฆด๋ฆฌ์ค 3.0.3) ์์ ํ ๋ฐฉ๋ฒ์ ๋๋ค.
ids
์ด๋ฒคํธ๋ฅผ js ์ธก์ผ๋ก ๋ค์ ๋ธ๋ก๋์บ์คํธํ๋๋ก ๋ค์ดํฐ๋ธ ์ธก( android ๋ฐ ios )์ ๋ง๋๋OneSignal.configure()
๋ผ๋ ๋ฌธ์ํ๋์ง ์์ js ์ธก ๋ฉ์๋๊ฐ ์์ต๋๋ค.๋ฐ๋ผ์ 'ids'์ ๋ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ์งํ์ ํธ์ถํ์ญ์์ค.
๋ค์ดํฐ๋ธ ์ธก์์ ๊ตฌํ๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ด ํ๊ฐ์ ๋ฐ๋ฅด๋ฉด ๋ ๋ฒ ์ด์ ํธ์ถํ๋ ๊ฒ์ด ๋งค์ฐ ์์ ํ ๊ฒ ๊ฐ์ต๋๋ค(๋ด๋ถ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๋์ฒดํ๊ณ ๋ ์ด์ ์์ฑํ์ง ์์). ๊ทธ๋ฌ๋ ๋งค๋ฒ
ids
๋ฆฌ์ค๋๋ฅผ ์คํํ๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค.์ด์ ๋์ค์ ์ฑ ์์ ์ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํ ๋ ๋ค๋ฅธ ์ด๋ฒคํธ๊ฐ ์๋ํ๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ด๋ถ ๊ตฌ๋ ์ ๋๊ธฐ์ด์ด ์๋ react-native-onesignal lib์ ์ํด ์ด๊ฒ์ด ๋ ์ ์์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก์ด ์ง์ฐ๋๋ ์ด ์๋๋ฆฌ์ค์ ๋ํด ๊ฐ๊น์ด ์์ผ ๋ด์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ํํ ์ ์๋๋ก ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.