Skip to content

Repository files navigation

React Native AWS S3

NPM versionBuild StatusDependency StatusdevDependency Status

A React Native wrapper for AWS iOS/Android S3 SDK.

We currently implements TransferUtility, it allow you to upload / download tasks in the background, very suitable for transferring large files, you can freely subscribe / unsubscribe, pause / resume / cancel the task.

See iOS/Android docs for more information.

Known issues

  • Currently reload js will lead TransferUtility not work. (#9)

Installation

$ npm install react-native-s3 --save

Setup

iOS

NOTE Only supported iOS ^8.0.

In XCode, in the project navigator:

  • Right click LibrariesAdd Files to [your project's name], Add node_modules/react-native-s3/ios/RNS3.xcodeproj.
  • Add libRNS3.a to your project's Build PhasesLink Binary With Libraries
  • Add $(SRCROOT)/../node_modules/react-native-s3/ios to Header Search Paths, and mark it as recursive.
  • Add $(SRCROOT)/../node_modules/react-native-s3/ios/Frameworks to your project's Build SettingsFramework Search Paths
  • Add node_modules/react-native-s3/ios/Frameworks/*.framework to your project's GeneralEmbedded Binaries
  • Edit AppDelegate.m of your project
#import"RNS3TransferUtility.h"
......
- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler {
[RNS3TransferUtility interceptApplication:application
handleEventsForBackgroundURLSession:identifier
completionHandler:completionHandler]
}
  • [Optional] you can set the credentials in AppDelegate.m
#import"RNS3TransferUtility.h"
......
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[RNS3TransferUtility nativeCredentialsOptions] setObject:@"eu-west-1"forKey:@"region"];
[[RNS3TransferUtility nativeCredentialsOptions] setObject:[NSNumbernumberWithInt:[RNS3TransferUtility credentialType:@"BASIC"]] forKey:@"type"];
[[RNS3TransferUtility nativeCredentialsOptions] setObject:@"your_access_key_here"forKey:@"access_key"];
[[RNS3TransferUtility nativeCredentialsOptions] setObject:@"your_secret_key_here"forKey:@"secret_key"];
......
}

Android

  • Edit android/settings.gradle of your project:
...
include ':react-native-s3'
project(':react-native-s3').projectDir =newFile(settingsDir, '../node_modules/react-native-s3/android')
  • Edit android/app/build.gradle of your project:
...
dependencies {
...
compile project(':react-native-s3')
}
  • Add package to MainActivity
......
importcom.mybigday.rns3.*; // importpublicclassMainActivityextendsReactActivity {
......
@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
newMainReactPackage(),
newRNS3Package() // add package
);
}
}

You can use rnpm instead of above steps.

  • Edit android/app/src/main/AndroidManifest.xml of your project:
<serviceandroid:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"android:enabled="true" />
  • [Optional] you can set the credentials in MainActivity:
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
RNS3TransferUtility.nativeCredentialsOptions.put("region", "eu-west-1");
RNS3TransferUtility.nativeCredentialsOptions.put("type", RNS3TransferUtility.CredentialType.BASIC);
RNS3TransferUtility.nativeCredentialsOptions.put("access_key", "your_access_key_here");
RNS3TransferUtility.nativeCredentialsOptions.put("secret_key", "your_secret_key_here");
}

The nativeCredentialsOptions type

  • BASIC
  • COGNITO

Usage

import{transferUtility}from'react-native-s3';

See API.md for more information.

Alternatives

  • react-native-aws3 - if you don't need the native library provided background upload/download task features.

License

MIT

About

A React Native wrapper for AWS iOS/Android S3 SDK.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages