web-dev-qa-db-fra.com

L'application n'a pas été enregistrée (react-native-navigation v2)

Réagissez au problème de navigation native v2.

Mon application démarre avec index.js et elle est également enregistrée dans AppDelegate. Voici les détails:

import { AppRegistry } from 'react-native'; const { start } = require('./src/app'); start();

Voici app.js:

`` ''

const { Navigation } = require('react-native-navigation');
const { registerScreens } = require('./screens');
const { Platform } = require('react-native');

if (Platform.OS === 'Android') {
alert = (title) => {
    Navigation.showOverlay({
        component: {
            name: 'navigation.playground.alert',
            passProps: {
                title
            },
            options: {
                overlay: {
                    interceptTouchOutside: true
                }
            }
        }
    });
};
}

function start() {
registerScreens();
Navigation.events().registerAppLaunchedListener(() => {
    Navigation.setDefaultOptions({
        _animations: {
            startApp: {
                y: {
                    from: 1000,
                    to: 0,
                    duration: 500,
                    interpolation: 'accelerate',
                },
                alpha: {
                    from: 0,
                    to: 1,
                    duration: 500,
                    interpolation: 'accelerate'
                }
            },
            Push: {
                topBar: {
                    id: 'TEST',
                    alpha: {
                        from: 0,
                        to: 1,
                        duration: 500,
                        interpolation: 'accelerate'
                    }
                },
                bottomTabs: {
                    y: {
                        from: 1000,
                        to: 0,
                        duration: 500,
                        interpolation: 'decelerate',
                    },
                    alpha: {
                        from: 0,
                        to: 1,
                        duration: 500,
                        interpolation: 'decelerate'
                    }
                },
                bottomTabs: {
                    y: {
                        from: 1000,
                        to: 0,
                        duration: 500,
                        interpolation: 'decelerate',
                    },
                    alpha: {
                        from: 0,
                        to: 1,
                        duration: 500,
                        interpolation: 'decelerate'
                    }
                },
                content: {
                    y: {
                        from: 1000,
                        to: 0,
                        duration: 500,
                        interpolation: 'accelerate',
                    },
                    alpha: {
                        from: 0,
                        to: 1,
                        duration: 500,
                        interpolation: 'accelerate'
                    }
                }
            },
            pop: {
                topBar: {
                    id: 'TEST',
                    alpha: {
                        from: 1,
                        to: 0,
                        duration: 500,
                        interpolation: 'accelerate'
                    }
                },
                bottomTabs: {
                    y: {
                        from: 0,
                        to: 100,
                        duration: 500,
                        interpolation: 'accelerate',
                    },
                    alpha: {
                        from: 1,
                        to: 0,
                        duration: 500,
                        interpolation: 'accelerate'
                    }
                },
                bottomTabs: {
                    y: {
                        from: 0,
                        to: 100,
                        duration: 500,
                        interpolation: 'decelerate',
                    },
                    alpha: {
                        from: 1,
                        to: 0,
                        duration: 500,
                        interpolation: 'decelerate'
                    }
                },
                content: {
                    y: {
                        from: 0,
                        to: 1000,
                        duration: 500,
                        interpolation: 'decelerate',
                    },
                    alpha: {
                        from: 1,
                        to: 0,
                        duration: 500,
                        interpolation: 'decelerate'
                    }
                }
            }
        }
    });

    Navigation.setRoot({
        root: {
            stack: {
                id: 'TEST',
                children: [
                    {
                        component: {
                            name: 'rp.welcome'
                        }
                    }
                ]
            }
        }
    });
});
}


module.exports = {
  start
};

Inscriptions d'écran:

const { Navigation } = require('react-native-navigation');
const WelcomeScreen = require('./WelcomeScreen');
const Authentication = require('./Authentication').default;
const Tutorial = require('./Tutorial');

function registerScreens() {
Navigation.registerComponent(`rp.welcome`, () => WelcomeScreen);
Navigation.registerComponent(`rp.tutorial`, ()=>Tutorial);
Navigation.registerComponent(`rp.authentication.super`,()=> Authentication);
}

module.exports = {
 registerScreens
 };

Env:

"dependencies": {
"react": "16.3.1",
"react-native": "0.55.4",
"react-native-navigation": "^2.0.2314",
"react-native-video": "^2.1.1",
"rn-viewpager": "^1.2.9"
 },
7

J'ai eu un problème similaire dans V2, et le problème était dû à la suppression des paramètres rootView dans les méthodes didFinishLaunchingWithOptions dans AppDelegate.m.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  [ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];


  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"XXXXXXXXXX"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  return YES;
}

Si vous les laissez dedans, Cela provoquera une erreur d'enregistrement de l'application XXXXXXXXXX . Les instructions IOS dans https://wix.github.io/react-native-navigation/v2/#/docs/Installing devraient souligner que ces lignes liées à rootView doit être retiré.

Le correct AppDelegates.m devrait être comme ceci:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  NSURL *jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  [ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];

  return YES;
}
18
RedGiant

J'ai eu le même problème mais uniquement sur Android. Il s'est avéré que j'avais raté une étape du processus de configuration.

Dans MainActivity.Java, il doit étendre com.reactnativenavigation.NavigationActivity au lieu de ReactActivity.

https://wix.github.io/react-native-navigation/v2/#/docs/Installing .

3
stephenheron

J'ai eu le même problème dans iOS. Dans mon cas, je le résous simplement en renommant le "Bundle display name" dans xcode dans info.plist. Pour une raison quelconque, Navigation.events (). RegisterAppLaunchedListener (() => {...}) n'a pas pu enregistrer l'application, il suffit de modifier le "Bundle display name" pour résoudre le problème.

0
Cassio Seffrin

J'ai résolu cela en mettant le nom de chaîne du composant comme ceci:

au lieu de: component: YourComponent

ça devrait être:

component: {
   name: 'YourComponent'
}

code complet ci-dessous:

Navigation.events().registerAppLaunchedListener(() => {
    Navigation.setRoot({
        root: {
            stack: {
                children: [
                    {
                        component: {                            
                            name: 'YourComponent'
                        }
                    }
                ]
            }
        }
    })
});

aussi, si vous Push ou setStackRoot, vous devez toujours utiliser le nom du composant: par ex.

component: {
name: 'YourComponent'
}
0
GinealSoftwareDev