Code Monkey home page Code Monkey logo

mcodex / react-native-sensitive-info Goto Github PK

View Code? Open in Web Editor NEW
966.0 966.0 211.0 48.17 MB

Save sensitive data into Android's Shared Preferences with keystore encryption/iOS's Keychain for React Native

Home Page: https://mcodex.dev/react-native-sensitive-info/

License: MIT License

JavaScript 3.72% Java 43.99% Objective-C 23.35% C# 6.34% Ruby 1.24% Starlark 0.64% TypeScript 6.40% C++ 13.20% C 1.14%
android android-shared-preferences fingerprint ios ios-keychain keystore react-native react-native-sensitive-info shared-preferences windows

react-native-sensitive-info's Introduction

Hello, I'm Mateus ๐Ÿ‘‹

Generalist Javascript developer with passion for back-end and software architecture.

Working with React/React-Native/NodeJS since 2015.


CHANGELOG ๐ŸŒฑ

2021

I decided to learn more about Full Cycle development. So, I'm diving into software development architecture concepts, monolitic and microservices development, Docker, Kubernetes, Kafka and more...

Plus, I stumbled upon Go and Elixir for back-end development and it has been an amazing experience.

2020

  • Studied React/React-Native/NodeJS more deeply,
  • Improved my CSS skills
  • Learned more about DDD, Clean Code, TDD
  • Met NestJS and created a few APIs
  • more...

mcodex's GitHub stats

react-native-sensitive-info's People

Contributors

acerbetti avatar ajcrites avatar ajimenezdev avatar allcontributors[bot] avatar andrejcesen avatar benlancaster avatar denissb avatar dependabot[bot] avatar geraintwhite avatar jaycantyemoney avatar lvlrsajjad avatar maggialejandro avatar maggialejandro-rp avatar maheshwarimrinal avatar mcodex avatar nickburkhartbb avatar npomfret avatar odemolliens avatar passion4it avatar philipshen avatar randycoulman avatar rianniello avatar saeedzhiany avatar samin avatar savelichalex avatar somoso avatar tero-paananen avatar un3qual avatar vspedr avatar ycai2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

react-native-sensitive-info's Issues

Fingerprint is not properly implemented for Android

When i access setItem or getItem with touchID = true,
i get get the following error: The callback getItem() exists in module RNSensitiveInfo, but only one callback may be registered to a function in a native module.
This happens on some of the phone i test with. But the issue is resolved when I removed the line pm.reject(String.valueOf(errorCode), errString.toString()); from RNSensitiveInfoModule (line 257 and line 337)in the android code for your module. after removing this line the app worked as expected and i was able to set and get items without issues. This is strange as onAuthenticationError should not be evoked if fingerprint works properly.

Could you have a look into this.

Incompatible pointer types

I'm getting two warnings when building from within Xcode 8.3.3.

  • Incompatible pointer types passing 'NSArray *' to parameter of type 'NSError *'
  • Incompatible pointer types sending 'const CFStringRef _Nonnull' (aka 'const struct __CFString *const') to parameter of type 'id _Nonnull'

It appears that these are actually fixed in the repo but because we're using yarn add react-native-sensitive-info to add it to our project we aren't getting the latest. We're getting version 5.1.0, but that was published back in May.

Can you publish a new version that has all the changes from the past 4+ months?

Thanks,
David

deleteItem gives error: Cannot read property 'then' of undefined

Hi,

I have below code which is called on press of a button.

onLogoutPressed = () => { console.log('Logout Pressed'); SInfo.deleteItem('token', {}) .then((values) => { console.log('deleted') }); console.log('Logout Pressed 2'); }

It gives me below error always:

Cannot read property 'then' of undefined.
Object.MessageScreen._this._onLogoutPressed [as on Press]
MessageScreen.js:30:5

It seems to me that deleteItem doesn't return a Promise.

How can I make a call to another function after ensuring that item is deleted?

Regards,
Bhavik

is react-native-senstive-info Asynchronous or Synchronous?

constructor(){
  super();
  this.state = {loggedIn: false};
  SInfo.getItem('token', {
  keychainService: 'myKeychain'}).then(value => {
    if(value){
      fetch('api/ping',{
            method: 'GET',
            headers: {'Authorization': value}
      })
      .then((responseJson) => {
        if(responseJson.status == 200){
            this.setState({loggedIn : true})
        }else{
            this.setState({loggedIn : false})
        }
      })
      .catch((error) => {
          alert(error);
      })
    }else{
        this.setState({loggedIn : false})
    }
  });
}

Is there any way I can make this function wait until I get success from api?

question

I know that the iOS keychain is stored in iCloud (if the user has turned that feature on), but is the same true of android user preferences?

duplicate symbol _messageForError

duplicate symbol _messageForError in:
/Users/iphonedeploy/Library/Developer/Xcode/DerivedData/punchinout-dbqwmosndkfyrhcrkbcebsnepfyv/Build/Products/Debug-iphonesimulator/libRNKeychain.a(RNKeychainManager.o)
/Users/iphonedeploy/Library/Developer/Xcode/DerivedData/punchinout-dbqwmosndkfyrhcrkbcebsnepfyv/Build/Products/Debug-iphonesimulator/libRNSensitiveInfo.a(RNSensitiveInfo.o)
duplicate symbol _makeError in:
/Users/iphonedeploy/Library/Developer/Xcode/DerivedData/punchinout-dbqwmosndkfyrhcrkbcebsnepfyv/Build/Products/Debug-iphonesimulator/libRNKeychain.a(RNKeychainManager.o)
/Users/iphonedeploy/Library/Developer/Xcode/DerivedData/punchinout-dbqwmosndkfyrhcrkbcebsnepfyv/Build/Products/Debug-iphonesimulator/libRNSensitiveInfo.a(RNSensitiveInfo.o)
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Options aren't optional

When calling getAllItems() on Android with no parameters supplied, it will error out with:

com.facebook.react.bridge.NativeArgumentsParseException: RNSensitiveInfo.getAllItems got 2 arguments, expected 3

If I pass in an empty object it will throw the exception error:

com.facebook.react.bridge.NoSuchKeyException: couldn't find key sharedPreferencesName in dynamic object

I am basically forced to specify an object with a sharedPreferencesName property. This applies to all the methods on Android that take an options parameter.

iOS > Unrecognized Selector on Error

The Issue

Context:
We have been experiencing an unrecognized selector error coming from RNSensitiveInfo on only iOS during low memory situations (may be red herring). It appears that in some cases RNSensitiveInfo will fail to retrieve our API key from the keystore. When it is rejecting the promise it throws an unrecognized selector error because the types do not match (see below).

The below is causing an unrecognized selector when the reject block is hit. Side note, this function should also return after hitting the reject block as the resolve should not be called after a reject has happened.

if (osStatus != noErr && osStatus != errSecItemNotFound) {
    NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil];
    reject(@"no_events", @"There were no events", @[makeError(error)]);
  }

Associated Crash:

2018-04-05 08:36:03.105458-0500 <MyApp>[1345:660925] Exception '-[__NSSingleObjectArrayI localizedDescription]: unrecognized selector sent to instance 0x1c0202930' was thrown while invoking getItem on target RNSensitiveInfo with params (
    "api_key",
        {
        keychainService = "key";
        sharedPreferencesName = "preferences";
    },
    166,
    167
)
callstack: (
	0   CoreFoundation                      0x00000001867ff17c <redacted> + 148
	1   libobjc.A.dylib                     0x0000000185a48528 objc_exception_throw + 56
	2   CoreFoundation                      0x000000018680c628 <redacted> + 0
	3   CoreFoundation                      0x0000000186804b10 <redacted> + 1380
	4   CoreFoundation                      0x00000001866e9ccc _CF_forwarding_prep_0 + 92
	5   <MyApp>                           0x00000001011f4144 RCTJSErrorFromCodeMessageAndNSError + 272
	6   <MyApp>                           0x00000001011a5be0 __41-[RCTModuleMethod processMethodSignature]_block_invoke_2.218 + 176
	7   <MyApp>                           0x0000000101938644 -[RNSensitiveInfo getItem:options:resolver:rejecter:] + 800
	8   CoreFoundation                      0x0000000186806ad0 <redacted> + 144
	9   CoreFoundation                      0x00000001866e536c <redacted> + 292
	10  CoreFoundation                      0x00000001866e9e1c <redacted> + 60
	11  <MyApp>                           0x00000001011a77c0 -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2064
	12  <MyApp>                           0x0000000101238b90 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 664
	13  <MyApp>                           0x0000000101238720 _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 132
	14  <MyApp>                           0x0000000101238690 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 28
	15  libdispatch.dylib                   0x0000000102b612cc _dispatch_call_block_and_release + 24
	16  libdispatch.dylib                   0x0000000102b6128c _dispatch_client_callout + 16
	17  libdispatch.dylib                   0x0000000102b6ff80 _dispatch_queue_serial_drain + 696
	18  libdispatch.dylib                   0x0000000102b647ec _dispatch_queue_invoke + 332
	19  libdispatch.dylib                   0x0000000102b70f6c _dispatch_root_queue_drain_deferred_wlh + 428
	20  libdispatch.dylib                   0x0000000102b78020 _dispatch_workloop_worker_thread + 652
	21  libsystem_pthread.dylib             0x0000000186426f1c _pthread_wqthread + 932
	22  libsystem_pthread.dylib             0x0000000186426b6c start_wqthread + 4

The proposed solution

Listen to the warning:
image

reject(@"no_events", @"There were no events", @[makeError(error)]);
// becomes
reject(@"no_events", @"There were no events", error);

Also return after rejecting:

if (osStatus != noErr && osStatus != errSecItemNotFound) {
    NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil];
    reject(@"no_events", @"There were no events", error);
    return;
  }

Note:

  • There is a call similar to this in the getAllItems function that likely exhibits the same problem.

Steps to reproduce:

  • Cause an error with the keychain store where it will reject the promise using the current code.

Note: I did this by changing osStatus != noErr to osStatus == noErr just to see it hit the block.

options is optional?

Hi.

Thanks for this project. I'm just getting. After reading "Options" is a new parameter (optional) I tried calling SInfo.deleteItem(_USER_ID_KEY) but it failed with RNSensitiveInfo. was called with 1 arguments but expects 2 arguments. Is the options parameter non-optional really?

No Touch ID prompt

I am not getting a touch ID prompt to scan my finger on iOS when retrieving a value stored using the touchID: true option. Any idea why that may be occurring? I am seeing the same behavior on the example app as well.

Touch ID prompt is not shown when set item in keychain.

Hi

This issue is with the iOS.

My SetItem code is
SInfo.setItem('hashPassword', hashPassword.toString(), {
keychainService: 'myKeychain',
kSecAccessControl: 'kSecAccessControlTouchIDCurrentSet',
sharedPreferencesName: 'mySharedPrefs',
touchID: true,
});

My getItem code is

SInfo.getItem('hashPassword', {
sharedPreferencesName: 'mySharedPrefs',
keychainService: 'myKeychain'}).then(value => {
}
});

Issue is , when i try to get the hashPassword , OS is not prompting any Touch ID for me.

I did a code walk through , there is a difference between your example code and the library code in mainly in "RNSensitiveInfo" class there is no Touch ID related code.

can you please update this ASAP.

Options out range exception when `sharedPreferencesName` is not defined.

Hello.
I run setItem('username', 'the username', {}) and see exception 'couldn't find key sharedPreferencesName in dynamic object'. On latest RN.


Notes:

SInfo uses RN ReadableMap (https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/jni/xreact/jni/ReadableNativeMap.cpp) which users folly/dynamic.

In folly/dynamic (https://github.com/facebook/folly/blob/master/folly/dynamic.cpp)
at dynamic const& dynamic::at(dynamic const& idx) const& { you can see that if key not found it will throw exception.

getAllItems() return value inconsistent on different platforms

Thanks for this library! It's been super-helpful for us.

We noticed that the getAllItems() function resolves the promise with different data types on iOS vs Android.

On iOS, we get back an array that contains another array. The inner array has objects with the keys service, key, and value:

[
  [
    { service: 'app', key: 'foo', value: 'bar' },
    { service: 'app', key: 'baz', value: 'quux' }
  ]
]

On Android, we get back an object that just has keys and values:

{
  foo: 'bar',
  baz: 'quux'
}

This inconsistency makes it difficult to use the results in a cross-platform way.

Sharing between apps

I need to store some oauth tokens with this but need to be able to access them from an iOS share extension. How do I set this up with the share group name I have defined in my entitlements file?
Thanks.

Losing Data on IOs

Hi,
I don't know if that's a common issue or not but I had a few users reporting a total loss of their data on IOs after updating the OS or updating apps.
It might be something in my code but maybe you get similar problems in the past and it is a known issue.
(I have over 10k users on Android and no issue reported so it seems IOs only)

Add Windows to npm release

Pulled down latest version 5.1.0 from NPM, and the entire windows directory is missing.
Any idea if RN Windows support is working?
When can we expect a release with Windows code in NPM?

[Question] About when app is uninstalled

I want to use this library to save device unique id (like ANDROID_ID). In PlayFab, there is a log-in method that use the unique id and the doc recommends to save it in key chain in case of iOS because the id is changed after app uninstalled. (see best practice section in https://api.playfab.com/docs/tutorials/landing-players/best-login)

As long as I understand, the shared preference is gone after app uninstalled unless the backup is enabled (and it's enabled by default). My question is how about key chain in iOS? the data is gone after app uninstalled?

Error when install module no compatible with RNGoogleSignin

i try integrate this module, when install it, modified this file project.pbxproj, and produced error i dont open this app by xcode, not parse this project

this installation write this
HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-google-signin/ios/RNGoogleSignin/""$(SRCROOT)/../node_modules/react-native-sensitive-info/ios/RNSensitiveInfo/";

in this case produced error but form correct could so :

HEADER_SEARCH_PATHS = ("$(SRCROOT)/../node_modules/react-native-google-signin/ios/RNGoogleSignin/",
"$(SRCROOT)/../node_modules/react-native-sensitive-info/ios/RNSensitiveInfo/
");

Question about 5.0 and Android KeyStore

Hi guys, first of all sorry for issue (i just don't know how i can ask you another way). I want to use Android KeyStore but now i see that this changes not in npm repo. So i want to ask about your plans for KeyStore, will you release this feature? Thank you for any answers!

add support kSecAttrAccessible

Please, add support kSecAttrAccessible in setItem (iOS). By default the value of the attribute is kSecAttrAccessibleWhenUnlocked. But sometimes it is required to use other value, for example in TodayExtension need to use value kSecAttrAccessibleAlways

Return a promise from setItem?

As I understand it, setItem is actually asynchronous. Is it possible to update setItem to return a promise that's resolved when setItem has completed? I'm running into an issue on iOS where I get a Could not locate shadow view with tag error if I try to call setState immediately after calling setItem. It's fixed if I add an artificial delay of a few hundred milliseconds. According to this issue facebook/react-native#7977, it seems related to trying to call setState before setItem is completed.

does not work with CRNA / Expo

Hi, any idea why I can't seem to import your module with a fresh CRNA install?

import SInfo from 'react-native-sensitive-info'

console.log('SInfo: ', SInfo)

console output:
SInfo: undefined

I use:

"dependencies": {
    "expo": "^21.0.0",
    "react": "16.0.0-alpha.12",
    "react-native": "^0.48.4",
    "react-native-sensitive-info": "^5.1.0"
  }

Using the Keystore on Android 4.3+

I am proposing a feature request :)

Since Android 4.3 the Android Keystore was introduced. Do you have any plans on switching to that for Android (or making it an option), since it's more secure for storing sensitive data like tokens and passwords?

encrypt: true

I noticed the addition of an option: encrypt: true. Looking at the android code it seems that this option is ignored completely, and all values are encrypted. Is that correct? If so it makes data stored with the previous version unreadable as it's assumed to be encrypted when it isn't. I don't require encryption, no one except my app (a root user) can read this data which is secure enough for my needs.

Android's keystore

Hey!

Opening a issue to track the progress of Android's keystore instead.
We're saving a token to storage and it would be great if it was possible to use the keystore instead of shared pref's.

Any idea when you might have time to look at this?

App crashing:unrecognized selector sent to instance

iOS versions: 11.3 and 11.4
react-native-sensitive-info versions: 5.1.0

My code

const keyNameSpace = {
  sharedPreferencesName: 'xyz',
  keychainService: 'xyz',
};
const migrationDone = await SInfo.getItem('migrationDone', keyNameSpace);

Exception logs

RCTFatalException: Exception '-[__NSSingleObjectArrayI localizedDescription]: unrecognized selector sent to instance 0x1c02081a0' was thrown while invoking getItem on target RNSensitiveInfo with params ( migrationDone, { keychainServic: Exception '-[__NSSingleObjectArrayI localizedDescription]: unrecognized sel...

android crash if sharedPreferencesName not supplied

I'll submit a PR shortly.

Exception in native call
                                                             com.facebook.react.bridge.NoSuchKeyException: couldn't find key sharedPreferencesName in dynamic object
                                                                 at com.facebook.react.bridge.ReadableNativeMap.getString(Native Method)
                                                                 at br.com.classapp.RNSensitiveInfo.RNSensitiveInfoModule.getItem(RNSensitiveInfoModule.java:26)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:345)
                                                                 at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:136)
                                                                 at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)

[Android]Key permanently invalidated when a new fingerprint is enrolled

This is Android only.
When I added a new fingerprint on system setting, the library now permanently fails authentication including calling of setItem. The error I received is "Key permanently invalidated". According to Android doc:

These keys become permanently invalidated once a new fingerprint is enrolled or all fingerprints are unenrolled.

It looks like in that case, the module will not work anymore, ever maybe? I'm not an Android developer, and maybe I'm misunderstanding the code. Can anyone help me understand this? Wether this is a bug or not?

Thanks

Only the last set item can be retrieved

With this test:

const configuration = {
  sharedPreferencesName: 'shared_preferences',
  keychainService: 'app'
}

SInfo.setItem('first', 'one', configuration)
SInfo.setItem('second', 'two', configuration)

SInfo.getItem('first', configuration).then((item) => {
  console.log(1, item)
})

SInfo.getItem('second', configuration).then((item) => {
  console.log(2, item)
})

SInfo.getAllItems(configuration).then((items) => {
  console.log('all', items)
})

Only the last set item is available via getItem or getAllItems.

1, undefined
2, two
all, [{ key: "second", service: "app", value: "two" }]

Tested in react-native-sensitive-info 3.0.1

RNSensitiveInfoModule's getAllItems method returning error (keystore branch)

Context

An Android user of a RN app that I work on is receiving the following error:
error

Cause(?)

I tried to reproduce it just mirroring both app and OS versions, but wasn't lucky. Then I dove at the lib's source code looking for the getAllItems trying to understand it. I think that for some reason, at the decrypt stage of this method, one of the entries value is null at this user device.(I forced a null as the decrypt parameter and got the very same error)

Could you guys help me with this? Either pointing what went wrong at this device or checking if it is a missing validation at the getAllItems method.

Device info

  • brand: Lenovo;
  • OS: Android;
  • os version: 5.1.1;

LKM if you guys need more info. Thanks in advance!

Print: Entry, ":CFBundleIdentifier", Does Not Exist

react-native-cli: 2.0.1
react-native: 0.36.1
npm version : 4.2.0
node version : 7.9.0
react-native-sensitive-info: "^4.0.0"

/Users/hedi/Projects/awesomeproject/node_modules/react-native-sensitive-info/ios/RNSensitiveInfo/RNSensitiveInfo.h:10:10: fatal error: 'React/RCTBridgeModule.h' file not found
 #import "React/RCTBridgeModule.h"
The following commands produced analyzer issues:
	Analyze RNFIRMesssaging.m
(1 command with analyzer issues)

The following build commands failed:
	CompileC /Users/hedi/Projects/awesomeproject/ios/build/Build/Intermediates/RNSensitiveInfo.build/Debug-iphonesimulator/RNSensitiveInfo.build/Objects-normal/x86_64/RNSensitiveInfo.o RNSensitiveInfo/RNSensitiveInfo.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
Installing build/Build/Products/Debug-iphonesimulator/serbaPay.app
No devices are booted.
Print: Entry, ":CFBundleIdentifier", Does Not Exist

Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/serbaPay.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

Please help, I've been stuck in this error for quite sometime, i thought it was about CFBundleIdentifier itself, but then i saw RNSensitiveInfo in the error. So i thought i come here to get some answer...

Stored value in Keychain is undefined

Hello..

Thanks for this great library.
I am using this library in one of my react-native project, but whenever I am trying to get value stored in keychain , is returning undefined in iOS.

Here is what is my use case
1-We have an existing "Native iOS App", which is already present in AppStore to download.
2-Now my client is redeveloping the same app in React-Native, and want to provide this new app as an update to existing users.
3-So we are keeping "Bundle ID" of our new (react-native app) same as that of older app (iOS native app), with higher version number ,so that our new will be downloaded as an updated.
4-Let's suppose, an existing user is already logged in the older app, so we want to maintain this logged status , whenever user update app with newer one.
5-In older app (iOS native app), we are saving "Access Token" in keychain, so based on whether "Access Token" is present in keychain, we decide the logged in status of user
6-Now, in newer app (react-native), we have to get that same "Access Token" from keychain, so that we can decide the logged in status of user and can navigate the user to appropriate screen.

I hope that makes sense!

Now when I am using this library, and try to get "Access Token" from keychain, its returning "undefined" in iOS.

Here may be I am doing something wrong, which only you guys can figure out.
This is how I am trying to get saved "Access Token".

SInfo.getItem("AccessToken", {}).then(value => {
alert(value);
console.log("access token is", value); // value1
});

encryption breaks compile

The new android encryption stuff requires version 18 of the android API. This isn't the default for react native project and renders this library unusable for those projects aim at 16.

There's an encryption implementation here that's compatible with 16.

Needed: Official iOS maintainer

Hello guys! It's been a long road since I've built this library just to solve a problem of mine. Opening it to the community was the best part of doing it, because I could see many programmers doing a great job and working side-by-side for an purpose.

In the last months RNSInfo received a lot of PRs and it is awesome for the community, but unfortunately I didnt launch a new release, because I don't have an available MacOS to test and fix bugs ๐Ÿ˜ž. For this reason I'm looking for an iOS maintainer to help us keep this wonderful library which is used by many projects and developers around the world.

If you are interested in, just drop a few words here.

Regards.

Same sharedPreferencesName between 2 apps on the phone

I'm trying to debug a problem on IOs only where a user lost all his data. I know there are many moving parts but while going trough the code (I can't replicate the issue) I wondered what happens if another application use the same "sharedPreferencesName" on the same phone.
I assume nothing happens but maybe you get another app info encrypted or something like that.
Do you have any idea? should I try to build a second app on the simulator?
Thanks,
Stefano

Keychain ANDROID install process on doc

you say

In your MainActivity.java add:


import br.com.classapp.RNSensitiveInfo.RNSensitiveInfoPackage; //<- You must import this

protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RNSensitiveInfoPackage(), // <- Add this line
    );
}

It is in MainApplication instead, just saying what the link does...

processReleaseResources generates 'no default translation' warning

while trying to run-android, im now getting the following warnings:

:react-native-sensitive-info:processReleaseResources
warning: string 'catalyst_debugjs' has no default translation.
warning: string 'catalyst_element_inspector' has no default translation.
warning: string 'catalyst_jsload_error' has no default translation.
warning: string 'catalyst_jsload_message' has no default translation.
warning: string 'catalyst_jsload_title' has no default translation.
warning: string 'catalyst_reloadjs' has no default translation.
warning: string 'catalyst_settings' has no default translation.
warning: string 'catalyst_settings_title' has no default translation.

any idea?

Examples

Could you review examples it seems like that they take 94.5MB

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.