react-native-sensitive-info не может прочитать свойство setItem из undefined

#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 и продолжение повторных попыток до тех пор, пока ошибка не исчезнет.

Здесь может потребоваться какое-то регулирование, хотя и с ограничением на количество попыток. Вам не захочется бесконечно повторять попытки, если выдается ошибка какого-либо другого типа.