crazycodeboy / react-native-splash-screen

A splash screen for react-native, hide when application loaded ,it works on iOS and Android.
MIT License
5.62k stars 1.1k forks source link

React Native 0.73 Integration #634

Open BenHurMartins opened 11 months ago

BenHurMartins commented 11 months ago

This is not an issue, only a heads up, considering there are not new updates on this library and until we get the new README.

I had some issues implementing splash screen on the newest react native version, using kotlin and to update the AppDelegate.mm. So after some digging and fixing, I want to share a boilerplate I created for general purposes and it also includes the splash screen implementation.

To use it:

npx react-native init MyApp --template react-native-template-ts-redux-navigation

The GitHub Repo

didac-wh commented 11 months ago

Could you elaborate on the setps required to implement this on an existing React Native 0.73 project?

ahmetcangurel commented 11 months ago

Now projects come with Kotlin. Instead of mainActivity.java there is mainActivity.kt file. I think he's talking about this problem

TreasWallet commented 11 months ago

MainActivity.kt

import org.devio.rn.splashscreen.SplashScreen

init {
    SplashScreen.show(this)
  }
vishalsohani27 commented 11 months ago

Its working with Emulator only. Not working with Physical Device. App crashed

pipo151086 commented 11 months ago

same Any progress?

dgreasi commented 11 months ago

Same issue

pipo151086 commented 11 months ago

The problem is with the release APK in a physical device!

is there anyone checking this issue?

because a found this other package: https://github.com/zoontek/react-native-bootsplash

it looks that this package is no longer being mainteined!!!!

vishalsohani27 commented 11 months ago

I moved with react native bootsplash, its working

On Thu, 28 Dec 2023, 8:03 pm pipo151086, @.***> wrote:

The problem is with the release APK in a physical device!

is there anyone checking this issue?

because a found this other package: https://github.com/zoontek/react-native-bootsplash

it looks that this package is no longer being mainteined!!!!

— Reply to this email directly, view it on GitHub https://github.com/crazycodeboy/react-native-splash-screen/issues/634#issuecomment-1871230221, or unsubscribe https://github.com/notifications/unsubscribe-auth/AR5EGHJE2M6GBQXZJ4V637TYLV7MRAVCNFSM6AAAAABATQZBUKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZRGIZTAMRSGE . You are receiving this because you commented.Message ID: @.***>

jotilohana commented 11 months ago

same issue

tuiza commented 11 months ago

This is not an issue, only a heads up, considering there are not new updates on this library and until we get the new README.

I had some issues implementing splash screen on the newest react native version, using kotlin and to update the AppDelegate.mm. So after some digging and fixing, I want to share a boilerplate I created for general purposes and it also includes the splash screen implementation.

To use it:

npx react-native init MyApp --template react-native-template-ts-redux-navigation

The GitHub Repo

This worked for me, thanks 😊

chaudev commented 10 months ago

MainActivity.kt

import org.devio.rn.splashscreen.SplashScreen

class MainActivity : ReactActivity() { init { SplashScreen.show(this) }

/**

mannoeu commented 10 months ago

This is not an issue, only a heads up, considering there are not new updates on this library and until we get the new README.

I had some issues implementing splash screen on the newest react native version, using kotlin and to update the AppDelegate.mm. So after some digging and fixing, I want to share a boilerplate I created for general purposes and it also includes the splash screen implementation.

To use it:

npx react-native init MyApp --template react-native-template-ts-redux-navigation

The GitHub Repo

It worked for me, just changing from java to kotlin syntax like below

// ...
import org.devio.rn.splashscreen.SplashScreen

class MainActivity : ReactActivity() {

  // ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    SplashScreen.show(this);
  }
  // ...
}
pipo151086 commented 10 months ago

@mannoeu & @chaudev Even with the mode=release APK?

mannoeu commented 10 months ago

mode=release APK

Yep, its works for me

sekoyo commented 10 months ago

I'm surprised onCreate worked for you, it caused a build error for me:

> Task :app:compileDevtestnetDebugKotlin FAILED
e: file:///<redacted>/android/app/src/main/java/com/<redacted>/app/android/MainActivity.kt:26:3 'onCreate' overrides nothing

Using init however worked.

init {
  SplashScreen.show(this)
}
mannoeu commented 10 months ago

I'm surprised onCreate worked for you, it caused a build error for me:

> Task :app:compileDevtestnetDebugKotlin FAILED
e: file:///<redacted>/android/app/src/main/java/com/<redacted>/app/android/MainActivity.kt:26:3 'onCreate' overrides nothing

Using init however worked.

init {
  SplashScreen.show(this)
}

Strange, i dont know about this

city0666 commented 10 months ago

IOS crashing spalsh how to solve

luis-cicada commented 10 months ago

@mannoeu where did you added this block??

init {
  SplashScreen.show(this)
}
mannoeu commented 10 months ago

@mannoeu where did you added this block??

init {
  SplashScreen.show(this)
}

I only rename from android/app/src/main/java/com/app-name/MainActivity.java to android/app/src/main/java/com/app-name/MainActivity.kt and fixing sintax from this

// ...
public class MainActivity extends ReactActivity {
  // ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SplashScreen.show(this);
  }
}

to this

// ...
import org.devio.rn.splashscreen.SplashScreen

class MainActivity : ReactActivity() {

  // ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    SplashScreen.show(this);
  }
  // ...
}

But, some people commented above that this causes an error for them. They suggested using the excerpt

// ...
import org.devio.rn.splashscreen.SplashScreen

class MainActivity : ReactActivity() {

  // ...
  init {
    SplashScreen.show(this)
  }
  // ...
}

In my case it was not necessary. Only the syntax adjustment worked.

luis-cicada commented 10 months ago

@mannoeu thanks brother! It did work with

// ...
import org.devio.rn.splashscreen.SplashScreen

class MainActivity : ReactActivity() {

  // ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    SplashScreen.show(this);
  }
  // ...
}
BenHurMartins commented 9 months ago

Hi, I only saw all the messages now, like 2 months later, well I didn't try on physical device, so I can't tell.

luis-cicada commented 9 months ago

@BenHurMartins I just tried on physical device and it is working fine!

BenHurMartins commented 9 months ago

awesome, good to know @luis-cicada , thanks. Just to be sure, did you tried the boilerplate I shared or another solution proposed here? and, iOS or android?

Creativestarjsp commented 9 months ago

anyone share me full guide of MainApplication.Kt and MainActivity.kt files Code? for me init { SplashScreen.show(this) } and
override fun onCreate(savedInstanceState: Bundle?) { SplashScreen.show(this); super.onCreate(null) }

both are not working app getting crashed while opening

tuiza commented 9 months ago

This is not an issue, only a heads up, considering there are not new updates on this library and until we get the new README.

I had some issues implementing splash screen on the newest react native version, using kotlin and to update the AppDelegate.mm. So after some digging and fixing, I want to share a boilerplate I created for general purposes and it also includes the splash screen implementation.

To use it:

npx react-native init MyApp --template react-native-template-ts-redux-navigation

The GitHub Repo

@Creativestarjsp you can follow this template

FaresHamel commented 9 months ago

@luis-cicada still work with you because I get this error What went wrong: Execution failed for task ':react-native-splash-screen:writeDebugAarMetadata'.

Failed to create parent directory '....../node_modules/react-native-splash-screen/android/build' when creating directory '...../node_modules/react-native-splash-screen/android/build/intermediates/aar_metadata/debug'

aditya-464 commented 8 months ago

@BenHurMartins thanks pal! It works perfectly!!

deivyrene commented 7 months ago

@BenHurMartins Thanks bro!

It helped me a lot!

bastiantowers commented 5 months ago

For those like me that has MainActivity.kt with no override of the function onCreate at all, maybe this would help.

The lines you need to add exactly are these, in your MainActivity.kt:

After all imports you have already, add these two lines:

import android.os.Bundle; // Avoid Bundle crashing
import org.devio.rn.splashscreen.SplashScreen // react-native-splash-screen lib

Then, no mather where, the rest:

class MainActivity : ReactActivity() {
/* the rest of the code */
 override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(null)
      SplashScreen.show(this)
  }
}

This is working for me using react-native 0.74.

Hope this help someone still blocked using this library in newer version on RN.

Mohamed-akmal0 commented 5 months ago

For those like me that has MainActivity.kt with no override of the function onCreate at all, maybe this would help.

The lines you need to add exactly are these, in your MainActivity.kt:

After all imports you have already, add these two lines:

import android.os.Bundle; // Avoid Bundle crashing
import org.devio.rn.splashscreen.SplashScreen // react-native-splash-screen lib

Then, no mather where, the rest:

class MainActivity : ReactActivity() {
/* the rest of the code */
 override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(null)
      SplashScreen.show(this)
  }
}

This is working for me using react-native 0.74.

Hope this help someone still blocked using this library in newer version on RN.

thanks @bastiantowers.... you saved me....!!!

REXY4 commented 3 weeks ago

In android/gradle.properties, ensure you have these lines:

android.enableJetifier=true

in MainApplication.kt

// react-native-splash-screen >= 0.3.1
import org.devio.rn.splashscreen.SplashScreenReactPackage;
// react-native-splash-screen < 0.3.1
import com.cboy.rn.splashscreen.SplashScreenReactPackage;

class MainApplication : Application(), ReactApplication {

  override val reactNativeHost: ReactNativeHost =
      object : DefaultReactNativeHost(this) {
        override fun getPackages(): List<ReactPackage> =
            PackageList(this).packages.apply {
              // Packages that cannot be autolinked yet can be added manually here, for example:
               SplashScreenReactPackage()  // insert this
            }

in MainActivity.kt

import android.os.Bundle
import org.devio.rn.splashscreen.SplashScreenReactPackage // Ensure you import this

  class MainActivity : ReactActivity() {

 override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(null)
      SplashScreen.show(this)
  }
}

in app.tsx

useEffect(() => {
    if (Platform.OS === 'android') {
      SplashScreen.hide();
    }
  }, []);