Use `UserDefaults` (iOS) with React Native and `SharedPreferences` on AndroidOS.
Use UserDefaults (iOS) with React Native and SharedPreferences on AndroidOS.
$ npm install rn-user-defaults --save
$ react-native link rn-user-defaults
#### iOS
1. In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]
2. Go to node_modules ➜ rn-user-defaults and add RNUserDefaults.xcodeproj
3. In XCode, in the project navigator, select your project. Add libRNUserDefaults.a to your project's Build Phases ➜ Link Binary With Libraries
4. Run your project (Cmd+R)<
#### Android
- Edit android/settings.gradle and add the following
``
include ':app', ':rn-user-defaults'
project(':rn-user-defaults').projectDir = new File(rootProject.projectDir, '../node_modules/rn-user-defaults/android')
`
- Edit android/app/build.gradle and add the following line before the react section in dependencies
``
dependencies {
...
implementation project(':rn-user-defaults')
implementation "com.facebook.react:react-native:+"
}
- Add these lines to MainApplication.java
``
...
import chat.rocket.userdefaults;
...
@Override
protected List
@SuppressWarnings("UnnecessaryLocalVariable")
List
...
packages.add(new RNUserDefaultsPackage());
return packages;
}
javascript
import RNUserDefaults from 'rn-user-defaults';RNUserDefaults.set('key', 'value').then(function() {console.log('done')}); // done
RNUserDefaults.get('key').then(function(value) {console.log(value)}); // value
RNUserDefaults.setObjectForKey('objKey', { dog: 1 }).then(function() {console.log('done')}); // done
RNUserDefaults.objectForKey('objKey').then(function(value) {console.log(value)}); // { dog: 1 }
`Static methods
Now you can use static methods to access current SharedPreferences or UserDefaults classes on native modules.
#### Android
`java
import android.content.SharedPreferences;
import chat.rocket.userdefaults.RNUserDefaultsModule;SharedPreferences sharedPreferences = RNUserDefaultsModule.getPreferences();
String exampleString = sharedPreferences.getString("STRING_KEY", "");
SharedPreferences sharedPreferences1 = RNUserDefaultsModule.getPreferences(reactApplicationContext);
String exampleString1 = sharedPreferences1.getString("STRING_KEY", "");
SharedPreferences sharedPreferences2 = RNUserDefaultsModule.getPreferences(reactApplicationContext, contextName, preferencesName);
String exampleString2 = sharedPreferences2.getString("STRING_KEY", "");
`#### iOS
`objective-c
#import "RNUserDefaults.h"NSDictionary *exampleObject = [[RNUserDefaults getDefaultUser] objectForKey:@"OBJECT_KEY"];
`$3
Add the follow code to your Info.plist
`
AppGroup
your.group.name
`API
`haxe
function get(key:String):Promise;
function set(key:String, value:String):Promise;
function setObjectForKey(key:String, value:Object):Promise;
function objectForKey(key:String):Promise ``