Приложение не было зарегистрировано (response-native-navigation v2) - PullRequest
0 голосов
/ 04 июня 2018

Реагирует на проблему собственной навигации v2.

Мое приложение запускается с index.js и также регистрируется в AppDelegate.Вот подробности:

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

Здесь 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
};

Регистрация экрана:

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
 };

Конверт:

"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"
 },

Ответы [ 4 ]

0 голосов
/ 18 июля 2019

Я решил это, поместив строковое имя компонента следующим образом:

вместо: component: YourComponent

оно должно быть:

component: {
   name: 'YourComponent'
}

completeкод ниже:

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

также, если вы нажимаете или setStackRoot, вы всегда должны использовать имя компонента: например,

component: {
name: 'YourComponent'
}
0 голосов
/ 17 августа 2018

У меня была похожая проблема в V2, и проблема была вызвана не удалением настроек rootView в методах didFinishLaunchingWithOptions в 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;
}

Если вы их оставите, Это приведет к тому, что в приложении XXXXXXXXXX не будет зарегистрирована ошибка .В инструкциях IOS в https://wix.github.io/react-native-navigation/v2/#/docs/Installing следует подчеркнуть, что эти строки, связанные с rootView, должны быть удалены.

Правильный AppDelegates.m должен выглядеть следующим образом:

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

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

  return YES;
}
0 голосов
/ 22 февраля 2019

У меня была такая же проблема в iOS.В моем случае я решаю это, просто переименовав «Отображаемое имя пакета» в xcode в info.plist.По какой-то причине Navigation.events (). RegisterAppLaunchedListener (() => {...}) не удалось зарегистрировать приложение, просто изменение «отображаемого имени пакета» решает проблему.

0 голосов
/ 20 июня 2018

У меня была такая же проблема, но только на Android.Оказалось, я пропустил шаг в процессе настройки.

В MainActivity.java он должен расширять com.reactnativenavigation.NavigationActivity вместо ReactActivity.

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

...