| 
1 | 1 | <img src="images/firebase-logo.png" width="116px" height="32px" alt="Firebase"/>  | 
2 | 2 | 
 
  | 
3 |  | -## Enabling Crash Reporting  | 
4 |  | -Nothing to do - since plugin version 3.4.2 this plugin automatically uploads  | 
5 |  | -crashes to your Firebase Console. Just check the 'Crash' menu item every now and then.  | 
 | 3 | +## Enabling Storage  | 
 | 4 | +Since plugin version 3.4.0 you can use Firebase _Storage_ features.  | 
6 | 5 | 
 
  | 
7 |  | -## Making sense of the stacktraces  | 
8 |  | -Please read [the official docs](https://firebase.google.com/docs/crash/)  | 
9 |  | -on what Crash reporting is and what you can do to have a better experience.  | 
 | 6 | +_Storage_ lets you upload and download files to/from Google Cloud Storage which is connected to your Firebase instance.  | 
10 | 7 | 
 
  | 
11 |  | -## Future work  | 
12 |  | -There's an option to send logs to Firebase along with the crash in order  | 
13 |  | -to add some context. This is however currently problematic on iOS but we'll keep an eye out.  | 
 | 8 | +To enable support for Remote Config you need to manually adjust  | 
 | 9 | +[Podfile](../platforms/ios/Podfile) and [include.gradle](../platforms/android/include.gradle).  | 
 | 10 | + | 
 | 11 | +Just uncomment the relevant lines (one for each platform) to add the SDK's to your app.  | 
 | 12 | + | 
 | 13 | +### Setting the storage bucket  | 
 | 14 | +You need to tell Firebase what your storage bucket is. You can retrieve it  | 
 | 15 | +from the Firebase console by pressing 'Storage' in the menu.  | 
 | 16 | + | 
 | 17 | +You can either pass it to the `init()` function as shown below,  | 
 | 18 | +or pass it as a property any time you're using a storage feature.  | 
 | 19 | +In theory the former is a little more efficient because it's cached by the plugin.  | 
 | 20 | + | 
 | 21 | +```js  | 
 | 22 | +  firebase.init({  | 
 | 23 | +    storageBucket: 'gs://n-plugin-test.appspot.com'  | 
 | 24 | +    // any other options  | 
 | 25 | +  });  | 
 | 26 | +```  | 
 | 27 | + | 
 | 28 | +## Functions  | 
 | 29 | + | 
 | 30 | +### uploadFile  | 
 | 31 | +You can either pass in a full local path to a file, or (as a convenience) use the `file-system` module that comes shipped with {N} as standard.  | 
 | 32 | + | 
 | 33 | +```js  | 
 | 34 | +  // init the file-system module  | 
 | 35 | +  var fs = require("file-system");  | 
 | 36 | + | 
 | 37 | +  // grab a reference to the app folder  | 
 | 38 | +  var appPath = fs.knownFolders.currentApp().path;  | 
 | 39 | + | 
 | 40 | +  // determine the path to a file in the app/res folder  | 
 | 41 | +  var logoPath = appPath + "/res/telerik-logo.png";  | 
 | 42 | + | 
 | 43 | +  // now upload the file with either of the options below:  | 
 | 44 | +  firebase.uploadFile({  | 
 | 45 | +    // optional, can also be passed during init() as 'storageBucket' param so we can cache it (find it in the Firebase console)  | 
 | 46 | +    bucket: 'gs://n-plugin-test.appspot.com',  | 
 | 47 | +    // the full path of the file in your Firebase storage (folders will be created)  | 
 | 48 | +    remoteFullPath: 'uploads/images/telerik-logo-uploaded.png',  | 
 | 49 | +    // option 1: a file-system module File object  | 
 | 50 | +    localFile: fs.File.fromPath(logoPath),  | 
 | 51 | +    // option 2: a full file path (ignored if 'localFile' is set)  | 
 | 52 | +    localFullPath: logoPath  | 
 | 53 | +  }).then(  | 
 | 54 | +      function (uploadedFile)   | 
 | 55 | +        console.log("File uploaded: " + JSON.stringify(uploadedFile));  | 
 | 56 | +      },  | 
 | 57 | +      function (error) {  | 
 | 58 | +        console.log("File upload error: " + error);  | 
 | 59 | +      };  | 
 | 60 | +  );  | 
 | 61 | +```  | 
 | 62 | + | 
 | 63 | +### downloadFile  | 
 | 64 | +As with `uploadFile` you can either pass in a full local path to a file, or (as a convenience) use the `file-system` module that comes shipped with {N} as standard.  | 
 | 65 | + | 
 | 66 | +In this example we'll download the previously uploaded file to a certain path on the local filesystem.  | 
 | 67 | + | 
 | 68 | +```js  | 
 | 69 | +  // init the file-system module  | 
 | 70 | +  var fs = require("file-system");  | 
 | 71 | + | 
 | 72 | +  // let's first determine where we'll create the file using the 'file-system' module  | 
 | 73 | +  var documents = fs.knownFolders.documents();  | 
 | 74 | +  var logoPath = documents.path + "/telerik-logo-downloaded.png";  | 
 | 75 | + | 
 | 76 | +  // this will create or overwrite a local file in the app's documents folder  | 
 | 77 | +  var localLogoFile = documents.getFile("telerik-logo-downloaded.png");  | 
 | 78 | + | 
 | 79 | +  // now download the file with either of the options below:  | 
 | 80 | +  firebase.downloadFile({  | 
 | 81 | +    // optional, can also be passed during init() as 'storageBucket' param so we can cache it  | 
 | 82 | +    bucket: 'gs://n-plugin-test.appspot.com',  | 
 | 83 | +    // the full path of an existing file in your Firebase storage  | 
 | 84 | +    remoteFullPath: 'uploads/images/telerik-logo-uploaded.png',  | 
 | 85 | +    // option 1: a file-system module File object  | 
 | 86 | +    localFile: fs.File.fromPath(logoPath),  | 
 | 87 | +    // option 2: a full file path (ignored if 'localFile' is set)  | 
 | 88 | +    localFullPath: logoPath  | 
 | 89 | +  }).then(  | 
 | 90 | +      function (uploadedFile)   | 
 | 91 | +        console.log("File downloaded to the requested location");  | 
 | 92 | +      },  | 
 | 93 | +      function (error) {  | 
 | 94 | +        console.log("File download error: " + error);  | 
 | 95 | +      };  | 
 | 96 | +  );  | 
 | 97 | +```  | 
 | 98 | + | 
 | 99 | +### getDownloadUrl  | 
 | 100 | +If you just want to know the remote URL of a file in remote storage so you can either share it or download the file by any other means than `downloadFile` then use this method.  | 
 | 101 | + | 
 | 102 | +In this example we'll determine the remote URL of the previously uploaded file.  | 
 | 103 | + | 
 | 104 | +```js  | 
 | 105 | +  firebase.getDownloadUrl({  | 
 | 106 | +    // optional, can also be passed during init() as 'storageBucket' param so we can cache it  | 
 | 107 | +    bucket: 'gs://n-plugin-test.appspot.com',  | 
 | 108 | +    // the full path of an existing file in your Firebase storage  | 
 | 109 | +    remoteFullPath: 'uploads/images/telerik-logo-uploaded.png'  | 
 | 110 | +  }).then(  | 
 | 111 | +      function (url)   | 
 | 112 | +        console.log("Remote URL: " + url);  | 
 | 113 | +      },  | 
 | 114 | +      function (error) {  | 
 | 115 | +        console.log("Error: " + error);  | 
 | 116 | +      };  | 
 | 117 | +  );  | 
 | 118 | +```  | 
0 commit comments