React-Native (Beta) - Full Integration

About Shipbook#

ShipBook gives you the power to remotely gather, search and analyze your user logs and exceptions in the cloud, on a per-user & session basis.


Requirements#

React Native version 0.63.0 and up.


Installation#

ShipBookSDK is available through: NPM

npm i @shipbook/react-native

Integrating ShipBook into your code#

To initialize, add the following:

import shipbook from '@shipbook/react-native';
shipBook.start("YOUR_APP_ID", "YOUR_APP_KEY");

To have a log on each class you need to create a logger:

import shipbook from '@shipbook/react-native';
let log = shipbook.getLogger("MODULE_NAME");

The usage of the log:

log.e("the log message"); // Error log
log.w("the log message"); // Warning log
log.i("the log message"); // Info log
log.d("the log message"); // Debug log
log.v("the log message"); // Verbose log

Enable Shipbook debug logging#

If your logs weren't uploaded to Shipbook, or you're experiencing some other issue with Shipbook, you can enable Shipbook debug logging to track down the problem.

shipbook.enableInnerLog(true);

Linking ShipBook to a user’s information#

The SDK allows the option to associate each session with specific user information.

Register user:#

The best practice is to set registerUser before ShipBook.start. It will also work after this point however, it will require an additional api request.

shipbook.registerUser("USER_ID", "USER_NAME", "USER NAME", "USER_EMAIL", "USER_PHONE_NUMBER", "STRING DICTIONARY OF KEY VALUE");

The only required parameter is userId.

Logout#

To logout the user, add the following code to your app’s logout function.

shipbook.logout();

Screen#

To log the user’s screen information, add the following code

shipbook.screen("SCREEN_NAME");

The best practice is to add this code to viewWillAppear in the view controller.

Flush#

Flush all logs on the device and send them now to the server.

shipbook.flush()

Get the UUID#

The SDK creates it's own UUID. So to get the UUID call te following code.

shipbook.getUUID()

Additional Information#

Static Function Alternative to getLogger#

You may use a static function in place of getLogger. This is not recommended and the caveats are listed below. When a static function activates the logger, the tag will become the filename. The usage of the logs:

Log.e("the log message") // Error log
Log.w("the log message") // Warning log
Log.i("the log message") // Info log
Log.d("the log message") // Debug log
Log.v("the log message") // Verbose log

As mentioned, working with this static logger isn't ideal:

  • Performance is slower, especially in cases where the log is closed
  • The log’s information is less detailed. Ideally, you should create a logger for each class.
  • The Log name can have a name collision with a local Log class.