Я пытаюсь установить 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