React-native-onesignal: [рдХреНрд░реИрд╢] [рдПрдВрдбреНрд░реЙрдЗрдб] getDeviceState рдореЗрдВ NullPointerException

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

рд╡рд┐рд╡рд░рдг:
рд╣рдореЗрдВ 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)
Android Possible Bug

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

@ diego-paired рд╣рдорд╛рд░реЗ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЛ OneSingal init рдХреЗ рдмрд╛рдж getDeviceState() рдкрд░ рдХреЙрд▓ рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдерд╛ (рд╣рдордиреЗ 2 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдЬреЛрдбрд╝реА)

рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

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

+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 рдХреНрд░реИрд╢ рдХреА рджрд░ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

image

рдореБрдЭреЗ рднреАред

рдЬрд╛рдирдХрд╛рд░реА рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЬрд╛рдирдХрд╛рд░реА рд▓рд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИ...
рдкреНрд░рдгрд╛рд▓реА:
рдУрдПрд╕: рдореИрдХреЛрдЬрд╝ 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 />
);

}

Screen Shot 2021-02-18 at 10 59 35

рд╣рд╛рдп @renatobentorocha ,
рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореБрдЦреНрдп рдРрдк рдШрдЯрдХ рдХреЗ рднреАрддрд░ рдПрд╕рдбреАрдХреЗ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдкреНрд░рднрд╛рд╡ рд╣реБрдХ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдПрд╕рд┐рдВрдХреНрд╕ рдХреЙрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЬреИрд╕реЗ рд╣реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд╕реНрд╡рд╛рдЧрдд рд╕реНрдХреНрд░реАрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк init рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП useState рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢, рдЬреИрд╕рд╛ рдХрд┐ @rgomezp рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ addSubscriptionObserver рдкрд░ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдкрджрд╛рд╡рдирдд getPermissionSubscriptionState рдкрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ), рдЬреЛ рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ,

рдзрдиреНрдпрд╡рд╛рдж

рд╣рд╛рдп @ tyang1 рдзреНрдпрд╛рди рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЙрд╕ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ-рд╕рд┐рдЧреНрдирд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (getPermissionSubscriptionState) рдХрд╣рддреЗ рд╣реИрдВ:

Screen Shot 2021-02-22 at 09 07 47

рдореИрдВ addSubscriptionObserver рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ

рдпрд╣ рднреА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдкреНрд░рдЬрдирди рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗред @rgomezp рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдереНрд░реЗрдбрд┐рдВрдЧ рдореБрджреНрджрд╛ рд╣реИ? рдпрд╣ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдХреБрдЫред рд╣рдо рдЕрдкрдиреА рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХрдИ рдирд┐рд╢рд╛рди рджреЗрдЦрддреЗ рд╣реИрдВ

image

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

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ @renatobentorocha рдХрд┐ рдЖрдк рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ 98% рд╣реЛ рд░рд╣рд╛ рд╣реИред

@oferRounds @dijinshopwise рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рднреА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ?

+1

image

@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

рдХреЛрдИ рдЙрдкрд╛рдп? рдХреЛрдИ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди?

рд╣рдо рдЕрднреА рднреА рдЗрдирдореЗрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдХреНрд░реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЛрдИ рдЦрдмрд░?
image

@ 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}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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