рд╡рд┐рд╡рд░рдг:
рд╣рдореЗрдВ RNOneSignal.getDeviceState
рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрдИ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣реА рд╣реИрдВ, рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдиреАрдЪреЗ рд╕рдВрд▓рдЧреНрди рд╣реИред
рдпрд╣ рд╣рд░ Android SDK рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд╛рддрд╛рд╡рд░рдг
"react-native-onesignal": "^4.0.2",
react: 17.0.1 => 17.0.1
react-native: 0.64.0-rc.2 => 0.64.0-rc.2
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ Google Play рдХреЗ рдХреНрд░реИрд╢ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдФрд░ рдХреБрдЫ:
at com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState (RNOneSignal.java:4)
at java.lang.reflect.Method.invoke (Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:147)
at com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:21)
at com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
at android.os.Handler.handleCallback (Handler.java:883)
at android.os.Handler.dispatchMessage (Handler.java:100)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java)
at android.os.Looper.loop (Looper.java:237)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:37)
at java.lang.Thread.run (Thread.java:919)
+1ред
java.lang.NullPointerException:
at com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState (RNOneSignal.java:4)
at java.lang.reflect.Method.invoke (Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:147)
at com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:21)
at com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java)
at android.os.Looper.loop (Looper.java:224)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:37)
at java.lang.Thread.run (Thread.java:764)
рд╣рд╛рдЙрдбреА рдбрд┐рдПрдЧреЛ,
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ: рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдХ рдФрд░ рдореЙрдбрд▓, рдУрдПрд╕, рдЖрджрд┐...)
рдЪрд┐рдпрд░реНрд╕
рд╣рд╛рдЙрдбреА рдбрд┐рдПрдЧреЛ,
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджредрдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрд╕ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ: рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдХ рдФрд░ рдореЙрдбрд▓, рдУрдПрд╕, рдЖрджрд┐...)
рдЪрд┐рдпрд░реНрд╕
рдЖрдкрдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдпрд╣ рд╣рдорд╛рд░реЗ Google Play рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ рд▓рдЧрднрдЧ 50 рдХреНрд░реИрд╢ рдХреА рджрд░ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рднреАред
рдЬрд╛рдирдХрд╛рд░реА рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЬрд╛рдирдХрд╛рд░реА рд▓рд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИ...
рдкреНрд░рдгрд╛рд▓реА:
рдУрдПрд╕: рдореИрдХреЛрдЬрд╝ 10.15.7
рд╕реАрдкреАрдпреВ: (4) x64 рдЗрдВрдЯреЗрд▓ (рдЖрд░) рдХреЛрд░ (рдЯреАрдПрдо) i5-5257U рд╕реАрдкреАрдпреВ @ 2.70GHz
рдореЗрдореЛрд░реА: 36.86 рдПрдордмреА / 8.00 рдЬреАрдмреА
рд╢реИрд▓: 5.7.1 - /рдмрд┐рди/zsh
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝:
рдиреЛрдб: 10.22.0 - ~/.nvm/рд╕рдВрд╕реНрдХрд░рдг/рдиреЛрдб/v10.22.0/рдмрд┐рди/рдиреЛрдб
рдпрд╛рд░реНрди: рез.реиреи.рек - /usr/рд╕реНрдерд╛рдиреАрдп/рдмрд┐рди/рдпрд╛рд░реНрди
рдПрдирдкреАрдПрдо: 6.14.6 - ~/.nvm/рд╕рдВрд╕реНрдХрд░рдг/рдиреЛрдб/v10.22.0/рдмрд┐рди/рдПрдирдкреАрдПрдо
рдЪреМрдХреАрджрд╛рд░: 4.9.0 - /usr/рд▓реЛрдХрд▓/рдмрд┐рди/рдЪреМрдХреАрджрд╛рд░
рдкреНрд░рдмрдВрдзрдХ:
CocoaPods: 1.10.0 - /usr/рд╕реНрдерд╛рдиреАрдп/рдмрд┐рди/рдкреЙрдб
рдПрд╕рдбреАрдХреЗ:
рдЖрдИрдУрдПрд╕ рдПрд╕рдбреАрдХреЗ:
рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо: рдЖрдИрдУрдПрд╕ 13.6, рдбреНрд░рд╛рдЗрд╡рд░рдХрд┐рдЯ 19.0, рдореИрдХрдУрдПрд╕ 10.15, рдЯреАрд╡реАрдУрдПрд╕ 13.4, рд╡реЙрдЪрдУрдПрд╕ 6.2
рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ:
рдПрдкреАрдЖрдИ рд╕реНрддрд░: реирей, реирел, реирем, реирео, реиреп
рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕: 28.0.3, 29.0.2, 29.0.3
рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдбреАрдХреЗ: рдирд╣реАрдВ рдорд┐рд▓рд╛
рдЖрдИрдбреАрдИ:
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ: 3.6 рдПрдЖрдИ-192.7142.36.36.6308749
рдПрдХреНрд╕рдХреЛрдб: резрез.рем/резрезрдИренрежрео - /usr/bin/xcodebuild
рднрд╛рд╖рд╛рдПрдБ:
рдЬрд╛рд╡рд╛: 1.8.0_242 - /usr/bin/javac
рдкрд╛рдпрдерди: 2.7.16 - /usr/bin/python
рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ:
@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕рдореБрджрд╛рдп/рдХреНрд▓реА: рдирд╣реАрдВ рдорд┐рд▓рд╛
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: резрем.резрей.рез => резрем.резрей.рез
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.63.3 => 0.63.3
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА-macos: рдирд╣реАрдВ рдорд┐рд▓рд╛
рдПрдирдкреАрдПрдо рдЧреНрд▓реЛрдмрд▓ рдкреИрдХреЗрдЬ:
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ : рдирд╣реАрдВ рдорд┐рд▓рд╛
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "0.63.3",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд": "^4.0.1",
рдШрд╛рддрдХ рдЕрдкрд╡рд╛рдж: java.lang.NullPointerException
рд╢реВрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐ 'org.json.JSONObject com.onesignal.OSDeviceState.toJSONObject ()' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState (RNOneSignal.java:239)
java.lang.reflect.Method.invoke (Method.java)
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:883)
android.os.Handler.dispatchMessage (Handler.java:100)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:241)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (рдереНрд░реЗрдб.рдЬрд╛рд╡рд╛:репрезреп)
рдХреГрдкрдпрд╛ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдЪрд┐рдпрд░реНрд╕
@rgomezp
OneSignal.getDeviceState() рдХреЙрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ:
const getDeviceState = async () => {
const deviceState = await OneSignal.getDeviceState();
console.log({ deviceState });
}
рдЕрдкрд╡рд╛рдж рд╣реИ:
Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'org.json.JSONObject com.onesignal.OSDeviceState.toJSONObject()' on a null object reference
com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState (RNOneSignal.java:239)
java.lang.reflect.Method.invoke (Method.java)
com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:151)
com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
android.os.Handler.handleCallback (Handler.java:883)
android.os.Handler.dispatchMessage (Handler.java:100)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
android.os.Looper.loop (Looper.java:241)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:226)
java.lang.Thread.run (Thread.java:919)
рд╡рдирд╕рд┐рдЧреНрдирд▓ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдкреИрдХреЗрдЬ рд╣реИрдВ:
"react-native": "0.63.3",
"react-native-onesignal": "^4.0.1",
````
The react native info:
```typescript
info Fetching system and libraries information...
System:
OS: macOS 10.15.7
CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Memory: 36.86 MB / 8.00 GB
Shell: 5.7.1 - /bin/zsh
Binaries:
Node: 10.22.0 - ~/.nvm/versions/node/v10.22.0/bin/node
Yarn: 1.22.4 - /usr/local/bin/yarn
npm: 6.14.6 - ~/.nvm/versions/node/v10.22.0/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.10.0 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: iOS 13.6, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
Android SDK:
API Levels: 23, 25, 26, 28, 29
Build Tools: 28.0.3, 29.0.2, 29.0.3
Android NDK: Not Found
IDEs:
Android Studio: 3.6 AI-192.7142.36.36.6308749
Xcode: 11.6/11E708 - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_242 - /usr/bin/javac
Python: 2.7.16 - /usr/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 16.13.1 => 16.13.1
react-native: 0.63.3 => 0.63.3
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "^0.63.4",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдПрдХ рд╕рдВрдХреЗрдд": "^4.0.3"
рдореИрдВрдиреЗ "рд░рд┐рдПрдХреНрд╢рди-рдиреЗрдЯрд┐рд╡-рд╡рдирд╕рд┐рдЧреНрдирд▓" рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛: "^3.9.3" рд╕реЗ "рд░рд┐рдПрдХреНрд╢рди-рдиреЗрдЯрд┐рд╡-рд╡рдирд╕рд┐рдЧреНрдирд▓": "^4.0.3"ред рдореБрдЭреЗ рдЕрдм рджреБрд░реНрдШрдЯрдирд╛рдПрдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╕рдорд╛рди рд╣реА init рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдЬреЛрдбрд╝рд╛ред
...
рдЪрд▓реЛ рдбрд┐рд╡рд╛рдЗрд╕ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ OneSignal.getDeviceState ();
...
рдкреНрд▓реЗ рд╕реНрдЯреЛрд░ рд╕реЗ рдХреНрд░реИрд╢ рд▓реЙрдЧ
java.lang.NullPointerException:
com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState (RNOneSignal.java) рдкрд░
java.lang.reflect.Method.invoke (Method.java) рдкрд░
com.facebook.react.bridge.JavaMethodWrapper.invoke рдкрд░ (JavaMethodWrapper.java)
com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java) рдкрд░
com.facebook.react.bridge.queue.NativeRunnable.run рдкрд░ (NativeRunnable.java)
android.os.Handler.handleCallback рдкрд░ (Handler.java:739)
android.os.Handler.dispatchMessage рдкрд░ (Handler.java:95)
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java) рдкрд░
android.os.Looper.loop рдкрд░ (Looper.java:148)
com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run рдкрд░ (MessageQueueThreadImpl.java)
java.lang.Thread.run рдкрд░ (рдереНрд░реЗрдб.рдЬрд╛рд╡рд╛:реорезрео)
рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд░реИрд╢ рд▓реЙрдЧ
рдШрд╛рддрдХ рдЕрдкрд╡рд╛рдж: java.lang.NullPointerException: рдПрдХ рд╢реВрдиреНрдп рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкрд░ рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐ 'org.json.JSONObject com.onesignal.g0.a ()' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState(RNOneSignal.java:4) рдкрд░
java.lang.reflect.Method.invoke(Method.java) рдкрд░
рд╣рд╛рдЙрдбреА,
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдпрд╣
const getDeviceState = async () => {
рдХреЙрдиреНрд╕реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕рд╕реНрдЯреЗрдЯ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ OneSignal.getDeviceState ();
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ({рдбрд┐рд╡рд╛рдЗрд╕рд╕реНрдЯреЗрдЯ});
}
рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕рдВрджрд░реНрдн рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг: getDeviceState
рдХреЙрд▓ рдХреИрд╕реЗ OneSignal рдЖрд░рдВрднреАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕ рдЖрд░рдПрди рдЬреАрд╡рдирдЪрдХреНрд░ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?
рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣рдореЗрдВ рд╡рд╣ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ getDeviceState
рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ getDeviceState
рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ OneSignal рдЖрд░рдВрднреАрдХрд░рдг рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ? рдЙрджрд╛рд╣рд░рдг: рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдЪреЗрдВрдЬ рдСрдмреНрдЬрд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рд░рдЦреЗрдВред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ getDeviceState
рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рдЙрд╕ рд╕рдордп рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рд░рд╛рдЬреНрдп рдХреЛ рдХреИрд╢ рди рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
@rgomezp
рдирдорд╕реНрддреЗ, App.tsx рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ:
const oneSignalIntialize = async () => {
OneSignal.setAppId('xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx');
}
const App = () => {
useEffect(() => {
oneSignalIntialize();
}, []);
return (
<LoginFlow />
);
}
рд▓реЙрдЧрд┐рди рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рд░рд╣рд╛, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рд╕реНрдХреНрд░реАрди рд╣реИ:
const getDeviceState = async () => {
const deviceState = await OneSignal.getDeviceState();
console.log({ deviceState });
}
const WelcomeScreen = () => {
useEffect(() => {
getDeviceState();
}, []);
return (
<Components />
);
}
рд╣рд╛рдп @renatobentorocha ,
рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореБрдЦреНрдп рдРрдк рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдПрд╕рдбреАрдХреЗ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдкреНрд░рднрд╛рд╡ рд╣реБрдХ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЙрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЬреИрд╕реЗ рд╣реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╕реНрд╡рд╛рдЧрдд рд╕реНрдХреНрд░реАрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк init рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП useState рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢, рдЬреИрд╕рд╛ рдХрд┐ @rgomezp рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ addSubscriptionObserver рдкрд░ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдкрджрд╛рд╡рдирдд getPermissionSubscriptionState рдкрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ), рдЬреЛ рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ,
рдзрдиреНрдпрд╡рд╛рдж
рд╣рд╛рдп @ tyang1 рдзреНрдпрд╛рди рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЙрд╕ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ-рд╕рд┐рдЧреНрдирд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (getPermissionSubscriptionState) рдХрд╣рддреЗ рд╣реИрдВ:
рдореИрдВ addSubscriptionObserver
рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
рдпрд╣ рднреА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдкреНрд░рдЬрдирди рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗред @rgomezp рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдереНрд░реЗрдбрд┐рдВрдЧ рдореБрджреНрджрд╛ рд╣реИ? рдпрд╣ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдХреБрдЫред рд╣рдо рдЕрдкрдиреА рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХрдИ рдирд┐рд╢рд╛рди рджреЗрдЦрддреЗ рд╣реИрдВ
рд╣рд╛рдЙрдбреА,
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдереНрд░реЗрдбрд┐рдВрдЧ рдореБрджреНрджрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рдХреЗ рдирд┐рд╢рд╛рди рд░реИрдкрд░ рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреБрдирд░реБрддреНрдкрд╛рджрди рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ @renatobentorocha рдХрд┐ рдЖрдк рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ 98% рд╣реЛ рд░рд╣рд╛ рд╣реИред
@oferRounds @dijinshopwise рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ?
+1
@rgomezp рдХреЛрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
async componentDidMount() {
this._isMounted = true
/* O N E S I G N A L S E T U P */
OneSignal.setAppId('***********************************')
OneSignal.setLogLevel(0, 0)
OneSignal.setRequiresUserPrivacyConsent(false)
/* O N E S I G N A L H A N D L E R S */
OneSignal.setNotificationWillShowInForegroundHandler(notifReceivedEvent => {
let notification = notifReceivedEvent.getNotification()
const buttonOk = {
text: 'OK', onPress: () => {
notifReceivedEvent.complete()
},
}
Alert.alert(notification.title, notification.body, [buttonOk])
if (notification.additionalData) {
//
}
})
OneSignal.setNotificationOpenedHandler(notification => {
//
})
OneSignal.disablePush(true)
const deviceState = await OneSignal.getDeviceState()
if (Platform.OS === 'ios' && !deviceState.isSubscribed) {
OneSignal.promptForPushNotificationsWithUserResponse(function(accepted) {
//
});
}
// ...
}
рдореИрдВ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ Google Play рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред
com.geektime.rnonesignalandroid.RNOneSignal.getDeviceState
рдХреЛрдИ рдЙрдкрд╛рдп? рдХреЛрдИ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди?
рд╣рдо рдЕрднреА рднреА рдЗрдирдореЗрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдХреНрд░реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЛрдИ рдЦрдмрд░?
@ diego-paired рд╣рдорд╛рд░реЗ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЛ OneSingal init рдХреЗ рдмрд╛рдж getDeviceState()
рдкрд░ рдХреЙрд▓ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдерд╛ (рд╣рдордиреЗ 2 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдЬреЛрдбрд╝реА)
@ diego-paired рд╣рдорд╛рд░реЗ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЛ OneSingal init рдХреЗ рдмрд╛рдж
getDeviceState()
рдкрд░ рдХреЙрд▓ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдерд╛ (рд╣рдордиреЗ 2 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдЬреЛрдбрд╝реА)
рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рд╣рд╛рдп @renatobentorocha ,
рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореБрдЦреНрдп рдРрдк рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдПрд╕рдбреАрдХреЗ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдкреНрд░рднрд╛рд╡ рд╣реБрдХ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЙрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЬреИрд╕реЗ рд╣реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╕реНрд╡рд╛рдЧрдд рд╕реНрдХреНрд░реАрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк init рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП useState рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢, рдЬреИрд╕рд╛ рдХрд┐ @rgomezp рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ addSubscriptionObserver рдкрд░ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдкрджрд╛рд╡рдирдд getPermissionSubscriptionState рдкрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ), рдЬреЛ рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ,
рдзрдиреНрдпрд╡рд╛рдж
@diego-paired @dan-developer
рдореИрдВрдиреЗ @rgomezp рд╕реБрдЭрд╛рд╡ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдХреНрд░реИрд╢, рдЕрднреА рдХреЗ рд▓рд┐рдП, рд░реБрдХ рдЧрдпрд╛ред
OneSignal.addSubscriptionObserver(() => {
OneSignal.getDeviceState().then((deviceState) => {
console.log({deviceState})
});
});
рдкрд░реАрдХреНрд╖рдг рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рдмрдЯрди рдореЗрдВ рдЬреЛрдбрд╝рд╛:
рд╕реНрдерд┐рддрд┐ 1
я╗┐я╗┐let getDeviceStateButton = this.renderButtonView(
"Get Device State",
isExternalUserIdLoading || isPrivacyConsentLoading,
() => {
console.log("Attempting to get device state");
this.setState({ isExternalUserIdLoading: true }, () => {
// OneSignal getDeviceState
let deviceState = OneSignal.getDeviceState();
console.log("deviceState: ", deviceState);
console.log("deviceState.isSubscribed: ", deviceState.isSubscribed);
this.setState({ isExternalUserIdLoading: false, isSubscribed: deviceState.isSubscribed });
console.log("this.state.isSubscribed after calling setState: ", this.state.isSubscribed);
console.log("deviceState.userId: ", deviceState.userId)
});
});
рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
2021-03-25 20:06:14.589544-0700 jonexample[751:27269] [javascript] Attempting to get device state
2021-03-25 20:06:14.645290-0700 jonexample[751:27269] [javascript] 'deviceState: ', { _U: 0, _V: 0, _W: null, _X: null }
2021-03-25 20:06:14.647385-0700 jonexample[751:27269] [javascript] 'deviceState.isSubscribed: ', undefined
2021-03-25 20:06:14.647768-0700 jonexample[751:27269] [javascript] 'this.state.isSubscribed after calling setState: ', undefined
2021-03-25 20:06:14.647897-0700 jonexample[751:27269] [javascript] 'deviceState.userId: ', undefined
рд╣рд╛рд▓рд╛рдВрдХрд┐ , рдХреЙрдореНрдкреЛрдиреЗрдВрдЯрдбрд┐рдбрдорд╛рдЙрдВрдЯ рдореЗрдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп:
рд╕реНрдерд┐рддрд┐ 2
async componentDidMount(){
я╗┐ const deviceState = await OneSignal.getDeviceState();
this.setState({ isSubscribed : deviceState.isSubscribed});
console.log("componentDidMount deviceState: ", deviceState);
console.log("componentDidMount deviceState.isSubscribed: ", deviceState.isSubscribed);
console.log("componentDidMount deviceState.userId: ", deviceState.userId);
}
рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
2021-03-25 20:14:46.521099-0700 jonexample[1326:55465] [javascript] 'componentDidMount deviceState: ', { userId: '92aa2978-3f53-454e-b1a6-652c43f0dba4',
2021-03-25 20:14:46.521328-0700 jonexample[1326:55465] [javascript] 'componentDidMount deviceState.isSubscribed: ', true
2021-03-25 20:14:46.521435-0700 jonexample[1326:55465] [javascript] 'componentDidMount deviceState.userId: ', '92aa2978-3f53-454e-b1a6-652c43f0dba4'
@rgomezp рдкрд░рд┐рджреГрд╢реНрдп 1 рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?
@ diego-paired @renatobentorocha @ dan-developer рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ?
рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
@ jfishman1 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ getDeviceState
рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдпрд╛ then
ред
рднрд▓реЗ рд╣реА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рд╣реИред рд╕рд░рдлреЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣рдЬрддрд╛ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЛрджрдиреЗ рдкрд░, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рдореВрд▓ рдкрдХреНрд╖ рд╕рдВрджрд░реНрдн рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
if (appContext == null) {
logger.error("OneSignal.initWithContext has not been called. Could not get OSDeviceState");
return null;
}
рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдореВрд▓ рд▓реЙрдЧрдХреИрдЯ рдореЗрдВ OneSignal.initWithContext has not been called. Could not get OSDeviceState
(рдЙрджрд╛рд╣рд░рдг: Android Studio рдЦреЛрд▓реЗрдВ)ред
рдЗрд╕ рдмреАрдЪ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреВрд░реНрдг рдХреНрд░реИрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдмреНрд░рд┐рдЬ рдореЗрдВ рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рднрд▓реЗ рд╣реА, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ:
рд╣рдо рдЕрднреА рднреА рдХреЗрд╡рд▓ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдЪреЗрдВрдЬ рдСрдмреНрдЬрд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЬрд▓реНрджреА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ
рдЖрдк рд╕рднреА рдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
#1085 рд╕реЗ:
рдЯрд╛рдЗрдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдЯреЗрдЯ рдЧреЗрдЯрд░ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕рджрд╕реНрдпрддрд╛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдореЗрдВ getDeviceState
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:
OneSignal.addSubscriptionObserver(async (event) => {
this.OSLog("OneSignal: subscription changed:", event);
if (event.to.isSubscribed) {
const state = await OneSignal.getDeviceState();
// do something with the device state
}
});
рдЕрджреНрдпрддрди: рдпрд╣ рдЕрдм рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 4.0.7 . рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдореИрдВрдиреЗ рдирд╡реАрдирддрдо 4.0.7 рд░реЗрдкреЛ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдХреБрдЫ рдЖрдИрдУрдПрд╕ рд╕рд┐рдореБрд▓реЗрдЯрд░ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрди рдлрд╝реАрд▓реНрдб рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕рд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдИ userId рдлрд╝реАрд▓реНрдб рднреА рдирд╣реАрдВ рд╣реИред
{"rootTag":21,"initialProps":{}}
WARN {"hasNotificationPermission": false, "isEmailSubscribed": false, "isPushDisabled": false, "isSMSSubscribed": false, "isSubscribed": false, "notificationPermissionStatus": 0}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж