#javascript #android #ios #react-native #security
#javascript #Android #iOS #react-native #Безопасность
Вопрос:
Проблема
react-native-sensitive-info не работает на iOS, я продолжаю получать ошибку «setItem не определен», потому что кажется, что SInfo загружается неправильно.
Хотя я могу отлично запустить на Android.
Что я пробовал
Я пробовал несколько разных значений и размещал их во многих разных точках своего кода. В настоящее время я использую первый пример, описанный на их Github, и он все еще не работает.
Код
import React from 'react';
import {
StyleSheet,
AsyncStorage
} from 'react-native';
import firebase from 'react-native-firebase';
import SInfo from 'react-native-sensitive-info';
import SplashScreen from 'react-native-splash-screen';
import AppContainer from './Components/BottomTabNav';
export default class App extends React.Component {
constructor(props) {
super();
this.state = {
userData: {}
};
SInfo.setItem('key1', 'value1', {
sharedPreferencesName: 'mySharedPrefs',
keychainService: 'myKeychain'
}).then((value) =>
console.log(value) //value 1
)
}
Если у кого-нибудь есть какие-либо предложения, это было бы здорово! Заранее спасибо за вашу помощь!
Комментарии:
1. Библиотека, скорее всего, просто неправильно настроена на стороне Android. Убедитесь, что вы правильно импортируете его в свое основное приложение
2. На самом деле это отлично работает для Android, но я получаю эту ошибку на iOS. Есть предложения @Kai?
3. Все равно обязательно дважды проверьте, что оно установлено правильно. Возможно, удалите и переустановите ваши модули
4. Я проверил свой pod-файл, и он включен туда. Я также попытался установить его в новый проект, и я все еще сталкиваюсь с той же проблемой. Как вы думаете, мне все еще следует удалять и переустанавливать мои модули? Я раньше этого не делал, поэтому немного беспокоюсь о том, что мой проект может быть поврежден
5. Не беспокойтесь об этом, это не большая проблема, чем удаление node_modules . Убедитесь, что вывод из
pod install
показывает, что он был установлен правильно, и убедитесь, что материал компоновщика в xcode настроен правильно в соответствии с инструкциями в readme
Ответ №1:
Похоже, это особенность библиотеки на iOS, где защищенные данные не всегда доступны при запуске приложения…
Смотрите проблему (неразрешенную): https://github.com/mCodex/react-native-sensitive-info/issues/326
Смотрите комментарий в коде библиотеки: https://github.com/mCodex/react-native-sensitive-info/blob/master/ios/RNSensitiveInfo/RNSensitiveInfo.m#L263
Менее чем идеальным обходным путем (на данный момент), по-видимому, является преобразование доступа RNSInfo в try catch и продолжение повторных попыток до тех пор, пока ошибка не исчезнет.
Здесь может потребоваться какое-то регулирование, хотя и с ограничением на количество попыток. Вам не захочется бесконечно повторять попытки, если выдается ошибка какого-либо другого типа.