Open ajayranga opened 1 year ago
plz check
Hello @ajayhcode thanks for reaching out! Could you please share more information about how you've initialized OneSignal in your app? If you could provide your initialization code as well as any additional log output prior to the error, we'd be happy to take a look!
Everything was working fine earlier but this issue comes after upgrading the onesignal package and upgrading react native from 0.70.5 to 0.72.4
Same error here, react-native-onesignal 5.0.0 and rn 0.72.3.
Link to same error with flutter https://github.com/OneSignal/OneSignal-Flutter-SDK/issues/730
I initialize with :
import {OneSignal} from 'react-native-onesignal';
...
OneSignal.setConsentRequired(false);
OneSignal.setConsentGiven(true);
OneSignal.initialize(Config.ONE_SIGNAL_APP_ID);
I remove onesignal in gradle and just keep react-native-onesignal with ^5.0.0
The issue went away after I downgraded to react-native-onesignal:4.5.2 with react-native 0.72.4
The issue reproduced for me as well:
Your app just crashed. See the error below. java.lang.RuntimeException: Could not invoke OneSignal.hasNotificationPermission com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:383) ... Caused by java.lang.Exception: Must call 'initWithContext' before use com.onesignal.internal.OneSignalImp.getNotifications(OneSignalImp.kt:81) com.onesignal.OneSignal.getNotifications(OneSignal.kt:62)
@jennantilla
Is there any progress?
I am also having this issue. https://documentation.onesignal.com/docs/react-native-sdk-setup docs say here that we need to also follow the steps for Android SDK setup. Do we need to follow all steps in android sdk? even when we are using react native sdk? The docs are not straightforward.
Hi @markui, thanks for pointing out some issue with our setup instructions. There is no need to follow the Android setup steps, and we will remove those instructions.
The exception about Expected receiver of type com.amazon.device.iap.internal.d, but got kotlin.Unit
has been fixed since Release 5.0.2.
For any other issues, please still refer to these instructions posted above..
Could you please share more information about how you've initialized OneSignal in your app? If you could provide your initialization code as well as any additional log output prior to the error, we'd be happy to take a look!
More information will help us investigate the issue, thanks for your help!
Hope this helps...
Exception in native call
java.lang.Exception: Must call 'initWithContext' before use
at com.onesignal.internal.OneSignalImp.getInAppMessages(OneSignalImp.kt:107)
at com.onesignal.OneSignal.getInAppMessages(OneSignal.kt:78)
at com.onesignal.rnonesignalandroid.RNOneSignal.removeHandlers(RNOneSignal.java:166)
at com.onesignal.rnonesignalandroid.RNOneSignal.onCatalystInstanceDestroy(RNOneSignal.java:210)
at com.facebook.react.bridge.BaseJavaModule.invalidate(BaseJavaModule.java:76)
at com.facebook.react.bridge.ModuleHolder.destroy(ModuleHolder.java:110)
at com.facebook.react.bridge.NativeModuleRegistry.notifyJSInstanceDestroy(NativeModuleRegistry.java:108)
at com.facebook.react.bridge.CatalystInstanceImpl$1.run(CatalystInstanceImpl.java:359)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:228)
at java.lang.Thread.run(Thread.java:920)
Same here with flutter also
Hi. Version 5.0.4 and there is still a problem.
Hi @xgenem and @burakcbdn and @demirbascoskun,
Can you share more information about your report? This GitHub Issue has a few different issues mentioned, so please clarify what you are experiencing, please still refer to these instructions posted above..
Could you please share more information about how you've initialized OneSignal in your app? If you could provide your initialization code as well as any additional log output prior to the error, we'd be happy to take a look!
hello! @demirbascoskun @burakcbdn I know that it's dumb and probably you've check everything, but I had same issue and in my case I just missed APP_ID in my CI configuration, so it didn't initialized correctly and because next calls was on not initialized instance - it throw those exceptions. Maybe it will help...
More insights. I also found out in my project that sometimes after codepush (when bundle restarting) onCatalystInstanceDestroy(RNOneSignal.java:210)
function called, which trying to invoke function at instance that not exist. After upgrading to latest ("5.0.4") issue gone.
P.S. I can see some changes related to this issue for Android SDK 5.0.5
I also face the same problem, I initialize onesignal within a useEffect in App.tsx, and run the device in the emulator, if I press R for a quick reload, it seems to lose the onesignal initialization reference.
I can only get around this problem by initializing onesignal outside of app.tsx in an isolated function.
OneSignal.Debug.setLogLevel(LogLevel.Verbose);
OneSignal.initialize(env.ONE_SIGNAL_APP_ID_ANDROID);
OneSignal.Notifications.requestPermission(true);
"react-native-onesignal": "^5.0.4",
"onesignal-expo-plugin": "^2.0.2",
Hope this helps...
Exception in native call java.lang.Exception: Must call 'initWithContext' before use at com.onesignal.internal.OneSignalImp.getInAppMessages(OneSignalImp.kt:107) at com.onesignal.OneSignal.getInAppMessages(OneSignal.kt:78) at com.onesignal.rnonesignalandroid.RNOneSignal.removeHandlers(RNOneSignal.java:166) at com.onesignal.rnonesignalandroid.RNOneSignal.onCatalystInstanceDestroy(RNOneSignal.java:210) at com.facebook.react.bridge.BaseJavaModule.invalidate(BaseJavaModule.java:76) at com.facebook.react.bridge.ModuleHolder.destroy(ModuleHolder.java:110) at com.facebook.react.bridge.NativeModuleRegistry.notifyJSInstanceDestroy(NativeModuleRegistry.java:108) at com.facebook.react.bridge.CatalystInstanceImpl$1.run(CatalystInstanceImpl.java:359) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:228) at java.lang.Thread.run(Thread.java:920)
RNOneSignal.java
@nan-li I'm facing the same issue on some Android devices; this is how I've initialized OneSignal in my app.
const OneSignalConfig = () => {
useEffect(() => {
if (__DEV__) {
OneSignal.Debug.setLogLevel(LogLevel.Verbose);
}
OneSignal.initialize(Config.ONE_SIGNAL_APP_ID);
OneSignal.Notifications.requestPermission(true);
OneSignal.Notifications.addEventListener('click', (event) => {
const data = event?.notification?.additionalData as NotificationData;
const deepLink = data?.deep_link || '';
mixpanel.track('User Clicked Push Notification', {
deep_link: deepLink,
title: event?.notification?.title || '',
body: event?.notification?.body || '',
notification_id: event?.notification?.notificationId || '',
platform: 'OneSignal'
});
});
}, []);
return null;
};
export default React.memo(OneSignalConfig);
I also face the same problem, I initialize onesignal within a useEffect in App.tsx, and run the device in the emulator, if I press R for a quick reload, it seems to lose the onesignal initialization reference.
I can only get around this problem by initializing onesignal outside of app.tsx in an isolated function.
OneSignal.Debug.setLogLevel(LogLevel.Verbose); OneSignal.initialize(env.ONE_SIGNAL_APP_ID_ANDROID); OneSignal.Notifications.requestPermission(true);
"react-native-onesignal": "^5.0.4", "onesignal-expo-plugin": "^2.0.2",
I have the same error and packages. Do you still call the isolated function inside a use effect in app.tsx or do you mean that you initialize One Signal outside of App.tsx function completely (i.e. in a global context instead)?
What is rather peculiar is that I noticed that even when I do not initialize OneSignal (i.e. in development mode), it anyway tries to load the GetInAppMessages and that fires off this error in development.
Early testing indicates that @gustavosorati solution also works for me, I put the initialization in a separate function that is called from app.ts
I have the same error and packages. Do you still call the isolated function inside a use effect in app.tsx or do you mean that you initialize One Signal outside of App.tsx function completely (i.e. in a global context instead)?
I currently initialize One Signal outside of the App.tsx function.
While trying to reload our Expo app, this issue occurs without initializing OneSignal on Android.
This is a complete report from PlayStore:
FATAL EXCEPTION: Thread-2
Process: com.awaken180weightloss.mobile, PID: 11043
java.lang.RuntimeException: Unable to destroy activity {com.awaken180weightloss.mobile/com.awaken180weightloss.mobile.MainActivity}: java.lang.reflect.InvocationTargetException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5454)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5487)
at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:47)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
at android.os.Handler.dispatchMessage(Handler.java:106)
at androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:10)
at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:7)
at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:1)
at androidx.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:5)
at androidx.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:6)
at androidx.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:1)
at androidx.test.espresso.action.Tap.sendSingleTap(Tap.java:5)
at androidx.test.espresso.action.Tap.-$$Nest$smsendSingleTap(Unknown Source:0)
at androidx.test.espresso.action.Tap$1.sendTap(Tap.java:1)
at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:4)
at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:2)
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:23)
at androidx.test.espresso.ViewInteraction.-$$Nest$mdoPerform(Unknown Source:0)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:6)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7870)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at expo.modules.ReactActivityDelegateWrapper.invokeDelegateMethod(ReactActivityDelegateWrapper.kt:285)
at expo.modules.ReactActivityDelegateWrapper.onDestroy(ReactActivityDelegateWrapper.kt:191)
at com.facebook.react.ReactActivity.onDestroy(ReactActivity.java:64)
at android.app.Activity.performDestroy(Activity.java:8339)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1376)
at androidx.test.runner.MonitoringInstrumentation.callActivityOnDestroy(MonitoringInstrumentation.java:1)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5441)
... 31 more
Caused by: java.lang.Exception: Must call 'initWithContext' before use
at com.onesignal.internal.OneSignalImp.getInAppMessages(OneSignalImp.kt:111)
at com.onesignal.OneSignal.getInAppMessages(OneSignal.kt:78)
at com.onesignal.rnonesignalandroid.RNOneSignal.removeHandlers(RNOneSignal.java:168)
at com.onesignal.rnonesignalandroid.RNOneSignal.onHostDestroy(RNOneSignal.java:200)
at com.facebook.react.bridge.ReactContext.onHostDestroy(ReactContext.java:351)
at com.facebook.react.ReactInstanceManager.moveToBeforeCreateLifecycleState(ReactInstanceManager.java:805)
at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:694)
at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:710)
at com.facebook.react.ReactDelegate.onHostDestroy(ReactDelegate.java:90)
at com.facebook.react.ReactActivityDelegate.onDestroy(ReactActivityDelegate.java:132)
... 39 more
I also face the same problem, I initialize onesignal within a useEffect in App.tsx, and run the device in the emulator, if I press R for a quick reload, it seems to lose the onesignal initialization reference.
I can only get around this problem by initializing onesignal outside of app.tsx in an isolated function.
OneSignal.Debug.setLogLevel(LogLevel.Verbose); OneSignal.initialize(env.ONE_SIGNAL_APP_ID_ANDROID); OneSignal.Notifications.requestPermission(true);
"react-native-onesignal": "^5.0.4", "onesignal-expo-plugin": "^2.0.2",
Did you solve your problem?
I also face the same problem, I initialize onesignal within a useEffect in App.tsx, and run the device in the emulator, if I press R for a quick reload, it seems to lose the onesignal initialization reference. I can only get around this problem by initializing onesignal outside of app.tsx in an isolated function.
OneSignal.Debug.setLogLevel(LogLevel.Verbose); OneSignal.initialize(env.ONE_SIGNAL_APP_ID_ANDROID); OneSignal.Notifications.requestPermission(true);
"react-native-onesignal": "^5.0.4", "onesignal-expo-plugin": "^2.0.2",
Did you solve your problem?
I managed to get around it by starting in an external function outside of App.tsx
@gustavosorati can you add some more context around how you are calling it / where you are including it in your code?
updating react-native-onesignal
to the latest version solves this problem.
+1
On my case the error comes because the constant of onesignalAppId is undefined when i use with Constants.expoConfig.extra.oneSignal App Id,
Im solved using process.env OneSignal.initialize( Constants.expoConfig.extra.oneSignalAppId || process.env.EXPO_PUBLIC_ONESIGNAL_APP_ID )
The same problem Android Kotlin
Process: com.cristaltitans.gamedev, PID: 26794
java.lang.Exception: Must call 'initWithContext' before 'login'
at com.onesignal.internal.OneSignalImp.login(OneSignalImp.kt:342)
at com.onesignal.IOneSignal$DefaultImpls.login(IOneSignal.kt:117)
at com.onesignal.internal.OneSignalImp.login(OneSignalImp.kt:56)
at com.onesignal.OneSignal.login(OneSignal.kt:157)
at com.cristaltitans.gamedev.start_screen.data.MainDataRepositoryImpl.getPushID(MainDataRepositoryImpl.kt:34)
at com.cristaltitans.gamedev.start_screen.presentation.StartActivity$onCreate$1$defPushId$1.invokeSuspend(StartActivity.kt:31)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:69)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:376)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.cristaltitans.gamedev.start_screen.presentation.StartActivity.onCreate(StartActivity.kt:30)
at android.app.Activity.performCreate(Activity.java:8595)
at android.app.Activity.performCreate(Activity.java:8573)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@324e9ed, Dispatchers.Main.immediate]
I'm facing the same issue
There is an issue related: https://github.com/OneSignal/react-native-onesignal/issues/1587
I checked how Onesignal is being initialized, as suggested in the issue #1587
I'm initializing Onesignal from a useEffect and not including initWithContext
in MainApplication.onCreate()
.
But I'm still having the problem.
Apparently, the issue was solved in Android SDK 5.1.16 release (July 2, 2024) https://github.com/OneSignal/OneSignal-Android-SDK/releases/tag/5.1.16
And react-native-onesignal latest release updates Android SDK to version 5.1.15 (Jun 21, 2024) https://github.com/OneSignal/react-native-onesignal/releases/tag/5.2.1
So, wait for the next release that includes the update of Android SDK to version 5.1.16 or higher.
@userlab-luissaavedra According to you, it was fixed in 5.2.2 version? I'll give it a try. https://github.com/OneSignal/react-native-onesignal/releases/tag/5.2.2
i used global variables to check if onesignal is initialized.
useEffect(() => {
if (!isOneSignalInit) {
OneSignal.Debug.setLogLevel(LogLevel.Verbose);
OneSignal.initialize(ONESIGNAL_APP_ID);
setIsOneSignalInit(true);
}
}, [isOneSignalInit]);
useEffect(() => {
if (isOneSignalInit) {
OneSignal.Notifications.addEventListener('click', event => {
console.log({event});
});
}
}, [isOneSignalInit]);
i used global variables to check if onesignal is initialized.
useEffect(() => { if (!isOneSignalInit) { OneSignal.Debug.setLogLevel(LogLevel.Verbose); OneSignal.initialize(ONESIGNAL_APP_ID); setIsOneSignalInit(true); } }, [isOneSignalInit]);
useEffect(() => { if (isOneSignalInit) { OneSignal.Notifications.addEventListener('click', event => { console.log({event}); }); } }, [isOneSignalInit]);
Yes, this works but I don't think it should be ideal, because your variable IsOneSignalInit
variable will always return true
, even if an error occurs during initialization, you can check this by passing no value during oneSignal initialization.
So far I have not found any solution other than starting outside my initial App.tsx function. If anyone has found it, please share it.
Same here, only android 11, for motorola moto g30 and moto g20
java.lang.RuntimeException: Unable to destroy activity {com.closeer.closeer_worker/com.closeer_worker.MainActivity}: java.lang.Exception: Must call 'initWithContext' before use
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5271)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5302)
at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:44)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2144)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:240)
at android.app.ActivityThread.main(ActivityThread.java:8000)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.Exception: Must call 'initWithContext' before use
at com.onesignal.internal.OneSignalImp.getInAppMessages(OneSignalImp.kt:115)
at com.onesignal.OneSignal.getInAppMessages(OneSignal.kt:78)
at com.onesignal.rnonesignalandroid.RNOneSignal.removeHandlers(RNOneSignal.java:179)
at com.onesignal.rnonesignalandroid.RNOneSignal.onHostDestroy(RNOneSignal.java:211)
at com.facebook.react.bridge.ReactContext.onHostDestroy(ReactContext.java:351)
at com.facebook.react.ReactInstanceManager.moveToBeforeCreateLifecycleState(ReactInstanceManager.java:792)
at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:681)
at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:697)
at com.facebook.react.ReactDelegate.onHostDestroy(ReactDelegate.java:121)
at com.facebook.react.ReactActivityDelegate.onDestroy(ReactActivityDelegate.java:141)
at com.facebook.react.ReactActivity.onDestroy(ReactActivity.java:64)
at android.app.Activity.performDestroy(Activity.java:8327)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1344)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5256)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5302)
at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:44)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2144)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:240)
at android.app.ActivityThread.main(ActivityThread.java:8000)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
What happened?
In debug mode in android getting initWithContext error even without initialization
Steps to reproduce?
What did you expect to happen?
on installing version 5.0.0
React Native OneSignal SDK version
5.0.0
Which platform(s) are affected?
Relevant log output
Code of Conduct