[BREAKGLASS] Use SharedPreference (Android) and UserDefaults (iOS) with React Native over a unified interface
Go to file
Tagir Almasov 4e025537eb
Add support for tvOS
This library is very useful for tvOS, since it doesn't support persistent storage, except for UserDefaults. 
I've checked and it works completely fine with my project. So, the only thing necessary is to add tvOS to platforms.
2019-10-15 12:19:49 +02:00
android bump version to 1.4.1 2019-10-10 14:20:46 +03:00
ios Clean up header file 2019-09-28 11:32:35 +02:00
.gitignore Initial commit 2016-12-08 12:14:15 +08:00
index.js Initial commit 2016-12-08 12:14:15 +08:00
LICENSE Closes #11 2017-08-16 13:57:55 +08:00
package.json bump version to 1.4.1 2019-10-10 14:20:46 +03:00
README.md Update README.md 2019-09-28 11:13:30 +02:00
RNDefaultPreference.podspec Add support for tvOS 2019-10-15 12:19:49 +02:00

npm version

react-native-default-preference

Use SharedPreferences (Android) and UserDefaults (iOS) with React Native over a unified interface. All data is stored as a string. If you need to support more complex data structures (e.g. JSON), use serialization/deserialization.

Getting started

$ npm install react-native-default-preference --save

React Native >= 0.60

$ cd ios && pod install

React Native <= 0.59

$ react-native link react-native-default-preference

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-default-preference and add RNDefaultPreference.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNDefaultPreference.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainApplication.java
  • Add import com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage; to the imports at the top of the file
  • Add new RNDefaultPreferencePackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-default-preference'
    project(':react-native-default-preference').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-default-preference/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-default-preference')
    

Usage

import DefaultPreference from 'react-native-default-preference';

DefaultPreference.get('my key').then(function(value) {console.log(value)});
DefaultPreference.set('my key', 'my value').then(function() {console.log('done')});

API

function get(key:String):Promise<String>;
function set(key:String, value:String):Promise<Void>;
function clear(key:String):Promise<Void>;
function getMultiple(keys:Array<String>):Promise<Array<String>>;
function setMultiple(data:Object):Promise<Void>;
function clearMultiple(keys:Array<String>):Promise<Void>;
function getAll():Promise<Object>;
function clearAll():Promise<Void>;

/** Gets and sets the current preferences file name (android) or user default suite name (ios) **/
function getName():Promise<String>;
function setName(name:String):Promise<Void>;

Cordova Native Storage Compatibility

This module is compatible with cordova-plugin-native-storage.

Android

You need to use the same SharedPreference as in the cordova plugin, to do so add the following line:

import { Platform } from 'react-native';
// ...
if (Platform.OS === 'android') DefaultPreference.setName('NativeStorage');

iOS

You don't need to change the name, as cordova-plugin-native-storage uses the default value.