Использование React Native Webview с React Native 0.37 - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь установить RN Webview , так как Apple собирается обесценить существующий WebView. У меня возникли некоторые проблемы с установкой.

Примечание. Наш проект находится на RN 0.37, и обновление не может быть выполнено немедленно.

После установки и компоновки библиотеки, при запуске мы получаем несколько импортов проблемы.

#import <React/RCTViewManager.h> -> In RNCWebViewManager.h

Файл 'React / RCTViewManager.h' не найден

Они были решены по тому, как мы импортируем файлы.

#import <React/RCTViewManager.h> -> #import "RCTViewManager.h"

Это было сделано для всех импортов, которые были импортированы из React.

После этого мы получаем следующие ошибки.

В файле, включенном в /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m: 8: /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:23:29: предупреждение: в указателе отсутствует спецификатор типа обнуляемости (_Nonnull , _Nullable или _Null_unspecified) [-Wnullability-полнота] @property (nonatomi c, слабый) id scriptDelegate; ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:23:54: note: вставьте «_Nullable», если указатель может быть нулевым @property (nonatomi c, слабый) id scriptDelegate; ^ _Nullable /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:23:54: note: вставьте «_Nonnull», если указатель никогда не должен быть нулевым @property (nonatomi c, слабый) id scriptDelegate; ^ _Nonnull /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:4: предупреждение: в указателе отсутствует спецификатор типа обнуляемости (_Nonnull , _Nullable или _Null_unspecified) [-Wnullability-completethness] - (instancetype) initWithDelegate: (id) scriptDelegate; ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:4: note: вставьте «_Nullable», если указатель может быть нулевым - (instancetype) initWithDelegate: (id) scriptDelegate; ^ _Nullable /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:4: note: вставьте «_Nonnull», если указатель никогда не должен быть нулевым - (instancetype) initWithDelegate: (id) scriptDelegate; ^ _Nonnull /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:35: предупреждение: в указателе отсутствует спецификатор типа обнуляемости (_Nonnull , _Nullable или _Null_unspecified) [-Wnullability-completethness] - (instancetype) initWithDelegate: (id) scriptDelegate; ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:60: note: вставьте «_Nullable», если указатель может быть нулевым - (instancetype) initWithDelegate: (id) scriptDelegate; ^ _Nullable /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:24:60: note: вставьте «_Nonnull», если указатель никогда не должен быть нулевым - (instancetype) initWithDelegate: (id) scriptDelegate; ^ _Nonnull /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:108:3: предупреждение: «UIScrollViewContentInsetAdjustmentBehavior» доступен только для iOS 11.0 или новее [-Wunguarded-Availability-New]
UIScrollViewContentInsetAdjustmentBehavior _savedContentInsetAdjustmentBehavior; ^ В модуле 'UIKit', импортированном из ../../react-native/React/Views/RCTView.h:12: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13 .2.sdk / System / Library / Frameworks / UIKit.framework / Headers / UIScrollView.h: 35: 28: note: «UIScrollViewContentInsetAdjustmentBehavior» помечен здесь как введенный в iOS 11.0, но цель развертывания - iOS 8.0.0 typedef NS_ENUM (NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {^ В файл включен из /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m: 8: /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.h:27:12: примечание: аннотировать RNCWebView с атрибутом доступности для отключить это предупреждение @interface RNCWebView: RCTView ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:394:44: предупреждение: 'UIScrollViewContentInsetAdjustment Поведение 'доступно только для iOS 11.0 или новее [-Wunguarded-Availability-New] - (void) setContentInsetAdjustmentBehavior: (UIScrollViewContentInsetAdjustmentBehavior) Поведение ^ В модуле' UIKit 'импортировано из ../../react-native/React/ Views / RCTView.h: 12: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h : 35: 28: примечание: «UIScrollViewContentInsetAdjustmentBehavior» помечен здесь как введенный в iOS 11.0, но целью развертывания является iOS 8.0.0 typedef NS_ENUM (NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {^ / Users / User / projects myapp / test-webview / ios -app / node_modules / react-native-webview / ios / RNCWebView.m: 394: 1: note: annotate 'setContentInsetAdjustmentBehavior:' с атрибутом доступности, чтобы отключить это предупреждение - (void) setContentInsetAdjustmentBehavior : (UIScrollViewContentInsetAdjustmentBehavior) поведение ^ / Пользователи / пользователь / проект ects / myapp / test-webview / ios -app / node_modules / react-native-webview / ios / RNCWebView.m: 129: 28: ошибка: неявное объявление функции 'RCTSharedApplication' недопустимо в C99 [-Werror, - Объявление функции Wimplicit-function] _savedStatusBarStyle = RCTSharedApplication (). StatusBarStyle; ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:129:50: ошибка: базовый тип ссылки на член 'int' не является структура или объединение _savedStatusBarStyle = RCTSharedApplication (). statusBarStyle; ~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules / react-native-webview / ios / RNCWebView.m: 130: 51: ошибка: базовый тип ссылки на элемент 'int' не является структурой или объединением _savedStatusBarHidden = RCTSharedApplication (). StatusBarHidden; ~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview /ios-app/node_modules/react-native-webview/ios/RNCWebView.m:138:44: предупреждение: UIScrollViewContentInsetAdjustmentNever доступно только в iOS 11.0 или новее [-Wunguarded-Availability-New] _savedContentInsetAdjustmentBhav UIScrollViewContentInsetAdjustmentNever; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В модуле 'UIKit', импортированном из ../. ./react-native/React/Views/RCTView.h:12: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk/System/Library/Frameworks/UIKit .framework / Headers / UIScrollView.h: 35: 28: note: «UIScrollViewContentInsetAdjustmentBehavior» помечен здесь как введенный в iOS 11.0, но цель развертывания - iOS 8.0. 0 typedef NS_ENUM (NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:138:44: примечание: закрыть 'UIScrollViewContentInsetAdjustmentNever' в проверке @available, чтобы отключить это предупреждение _savedContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test- webview / ios -app / node_modules / react-native-webview / ios / RNCWebView.m: 270: 27: предупреждение: 'setContentInsetAdjustmentBehavior:' доступно только для iOS 11.0 или новее [-Wunguarded-Availability-New] _webView.scrollView.contentInsetAdjustmentBehavior = _savedContentInsetAdjustmentBehavior; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В модуле 'UIKit', импортированном из ../../react-native/React/Views /RCTView.h:12: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h: 68:65: note: 'setContentInsetAdjustmentBehavior:' был помечен здесь как введенный в iOS 11.0, но целью развертывания является iOS 8.0.0 @property (nonatomi c) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior (10) (10) 11.0), tvos (11.0)); ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:270:27: note: заключить «setContentInsetAdjustmentBehavior:» в проверку @available чтобы отключить это предупреждение _webView.scrollView.contentInsetAdjustmentBehavior = _savedContentInsetAdjustmentBehavior; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules /react-native-webview/ios/RNCWebView.m:308:5: ошибка: неявное объявление функции 'RCTUnsafeExecuteOnMainQueueSyn c' недопустимо в C99 [-Werror, -Wimplicit-function-объявление] RCTUnsafeExecuteOnMainQueueSyn (1087 * {^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:309:8: ошибка: неявное объявление функции 'RCTSharedApplication' недопустимо в C99 [-Werror, -Wimplicit-function-объявление] [RCTSharedApplication () setStatusBarStyle: UIStatusBarStyleLightContent animated: YES]; ^ / Users / пользователь / projects / myapp / test-webview / ios -app / node_modules / реагировать-родной -webview / ios / RNCWebView.m: 309: 8: ошибка: неверный тип получателя 'int' [RCTSharedApplication () setStatusBarStyle: UIStatusBarStyleLightContent animated: YES]; ^ ~~~~~~~~~~~~~~~~ ~~~~~ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:318:5: e rror: неявное объявление функции 'RCTUnsafeExecuteOnMainQueueSyn c' недопустимо в C99 [-Werror, -Wimplicit-function-декларация] RCTUnsafeExecuteOnMainQueueSyn c (^ {^ / Users / пользователь / projects / myapp / test-webview / ios -app / node_modules / react-native-webview / ios / RNCWebView.m: 319: 8: ошибка: неявное объявление функции 'RCTSharedApplication' недопустимо в C99 [-Werror, -Wimplicit-function-объявление] [RCTSharedApplication () setStatusBarHidden: self -> _ saveStatusBarHidden animated: YES]; ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:319:8: ошибка: неверный тип получателя 'int' [RCTSharedApplication () setStatusBarHidden: self -> _ saveStatusBarHidden animated: YES]; ^ ~~~~~~~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules / Reaction-native-webview / ios /RNCWebView.m:320:8: ошибка: неверный тип получателя 'int' [RCTSharedApplication () setStatusBarStyle: self -> _ saveStatusBarStyle animated: YES]; ^ ~~~~~~~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules / Reaction-native-webview / ios /RNCWebView.m:403:29: предупреждение: 'setContentInsetAdjustmentBehavior:' доступно только для iOS 11.0 или новее [-Wunguarded-Availability-New] _webView.scrollView.contentInsetAdjustmentBehavior = поведение; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В модуле 'UIKit', импортированном из ../../react-native/React/Views /RCTView.h:12: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIScrollView.h: 68:65: note: 'setContentInsetAdjustmentBehavior:' помечен здесь как введенный в iOS 11.0, но цель развертывания - iOS 8.0.0 @property (nonatomi c) 11.0), tvos (11.0)); ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:403:29: примечание: заключить 'setContentInsetAdjustmentBehavior:' в проверку @available заставить замолчать это предупреждение _webView.scrollView.contentInsetAdjustmentBehavior = поведение; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules /react-native-webview/ios/RNCWebView.m:684:5: ошибка: неявное объявление функции 'RCTJSONStringify' недопустимо в C99 [-Werror, -Wimplicit-function-объявление] RCTJSONStringify (eventInitDict, NULL) ^ / Users /user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:684:5: warning: формат указывает тип 'id', но аргумент имеет тип 'int '[-Wformat] RCTJSONStringify (eventInitDict, NULL) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / Пользователи /user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1003:61: предупреждение: '&&' в пределах '||' [-Wlogical-op-круглые скобки] if ([error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 102 || [error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 101) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ^ ~~~~~~~~~~~~~~~~~~~ ~~ / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules / Reaction-native-webview /ios/RNCWebView.m:1003:61: note: поместите круглые скобки вокруг выражения '&&', чтобы заглушить это предупреждение, если ([[error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 102 || [error. domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 101) {^ () / Пользователи / пользователь / проекты / myapp / test-webview / ios -app / node_modules / реагировать-нативно-webview / ios / RNCWebView .m: 1003: 137: предупреждение: '&&' внутри '||' [-Wlogical-op-круглые скобки] if ([error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 102 || [error.domain isEqualToString: @ "WebKitErrorDomain"] && error.code == 101) { ~~

/Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1003:137:
note: place parentheses around the '&&' expression to silence this
warning
    if ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102 || [error.domain
isEqualToString:@"WebKitErrorDomain"] && error.code == 101) {
                                                                                                                                        ^
                                                                                    (                                                                     
)
/Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1221:11:
error: implicit declaration of function 'RCTJSONStringify' is invalid
in C99 [-Werror,-Wimplicit-function-declaration]
          RCTJSONStringify(cookie.name, NULL),
          ^ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1221:11:
warning: format specifies type 'id' but the argument has type 'int'
[-Wformat]
          RCTJSONStringify(cookie.name, NULL),
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1222:11:
warning: format specifies type 'id' but the argument has type 'int'
[-Wformat]
          RCTJSONStringify(cookie.value, NULL)];
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/user/projects/myapp/test-webview/ios-app/node_modules/react-native-webview/ios/RNCWebView.m:1224:54:
warning: format specifies type 'id' but the argument has type 'int'
[-Wformat]
          [script appendFormat:@" + '; Path=' + %@", RCTJSONStringify(cookie.path, NULL)];
                                                ~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                %d 14 warnings and 12 errors generated.

Как мы решаем эту проблему?

Среда:

  • ОС: Ma c
  • ОС версия: Catalina 10.15.3
  • реактивная версия: 0.37
  • реактивная версия: 9.0.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...