1.4.1 • Published 5 years ago

react-native-dihola-shaking v1.4.1

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
5 years ago

DiHola Shaking API for React Native

DiHola Shaking API makes it easy to build fast and reliable ways to communicate between devices, just by shaking them. We provide such a secure and flexible protocol that this technology can be applied in any form of data exchange: Payment processing, file sharing, social networking, verification processes, etc.

Index

  1. Installation
  2. Usage
  3. Methods
  4. Error Codes

Installation

$ npm install react-native-dihola-shaking --save

Mostly automatic installation

$ react-native link react-native-dihola-shaking

Note: Manual installation step 4 for both Android and iOS is required.

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-dihola-shaking and add RNDiHolaShaking.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNDiHolaShaking.a to your project's Build PhasesLink Binary With Libraries
  4. Add NSLocationWhenInUseUsageDescription to Info.plist
  5. Run your project (Cmd+R)

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.diholapp.RNDiHolaShakingPackage; to the imports at the top of the file
  • Add new RNDiHolaShakingPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-dihola-shaking'
    project(':react-native-dihola-shaking').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-dihola-shaking/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-dihola-shaking')
  3. If you've defined project-wide properties (recommended) in your root build.gradle, this library will detect the presence of the following properties:

    buildscript {...}
    allprojects {...}
    
    /**
     + Project-wide Gradle configuration properties
     */
    ext {
        compileSdkVersion   = 25
        targetSdkVersion    = 25
        buildToolsVersion   = "25.0.2"
        supportLibVersion   = "25.0.1"
        googlePlayServicesVersion = "11.0.0"
    }

    If you do not have project-wide properties defined and have a different play-services version than the one included in this library, use the following instead. But play service version should be 11+ or the library won't work.

    ...
    dependencies {
        ...
        compile(project(':react-native-dihola-shaking')) {
            exclude group: 'com.google.android.gms', module: 'play-services-location'
        }
        compile 'com.google.android.gms:play-services-location:<insert your play service version here>'
    }

Usage

import { ShakingAPI } from 'react-native-dihola-shaking';

ShakingAPI.configure({

    API_KEY: "<API_KEY>",
    user: "<USER_ID>",
    
    onShaking: () => {
      console.log("Shaking event detected");
    },
    
    onSuccess: (result) => {
      (result.length > 0)
        ? console.log("You connected with: " + result)
        : console.log("Couldn't find anyone...");
    },
    
    onError: (error) => {
      console.log(error);
    }
    
}).start();

Here you can find an example.

Methods

Summary

Details

configure()

ShakingAPI.configure(options);
  • options:

    NameTypeDefaultRequiredDescription
    API_KEYstring--yesGet one at www.diholapp.com
    userstring--yesUser identifier
    latnumberDevice current valuenoLatitude coordinates
    lngnumberDevice current valuenoLongitude coordinates
    sensibilitynumber25noShaking sensibility
    distanceFilternumber100noMaximum distance (in meters) between two devices to be eligible for pairing.
    timingFilternumber2000noMaximum time difference (in milliseconds) between two shaking events to be eligible for pairing.
    keepSearchingbooleanfalsenoA positive value would allow to keep searching even though if a user has been found. This could allow to pair with multiple devices. The response time will be affected by the timingFilter value.
    vibratebooleantruenoVibrate on shaking.
    onShakingfunction--noInvoked when the shaking event is detected
    onSuccessfunction--yesInvoked with a list of paired users
    onErrorfunction--yesInvoked whenever an error is encountered

start()

ShakingAPI.start();

Starts listening to shaking events.


stop()

ShakingAPI.stop();

Stops listening to shaking events.


simulate()

ShakingAPI.simulate();

Simulates the shaking event.


setSensibility()

ShakingAPI.setSensibility(sensibility);

Sets the sensibility for the shaking event to be triggered.

Parameters:

NameTypeDefault
sensibilitynumber25

setDistanceFilter()

ShakingAPI.setDistanceFilter(distanceFilter);

Sets the maximum distance (in meters) between two devices to be eligible for pairing.

Parameters:

NameTypeDefaultNote
distanceFilternumber100GPS margin error must be taken into account

setTimingFilter()

ShakingAPI.setTimingFilter(timingFilter);

Sets the maximum time difference (in milliseconds) between two shaking events to be eligible for pairing.

Parameters:

NameTypeDefaultNote
timingFilternumber2000Value between 100 and 10000

setKeepSearching()

ShakingAPI.setKeepSearching(keepSearching);

A positive value would allow to keep searching even though if a user has been found. This could allow to pair with multiple devices. The response time will be affected by the timingFilter value.

Parameters:

NameTypeDefault
keepSearchingbooleanfalse

setLocation()

ShakingAPI.setLocation(latitude, longitude);

Setting the location manually will disable using the device location.

Parameters:

NameTypeDefault
latitudenumberDevice current value
longitudenumberDevice current value

Error Codes

NameDescription
LOCATION_PERMISSION_ERRORLocation permission has not been accepted
LOCATION_DISABLEDLocation is disabled
SENSOR_ERRORThe sensor devices are not available
AUTHENTICATION_ERRORAPI key invalid
API_KEY_EXPIREDAPI key expired
SERVER_ERRORServer is not available

Example:

import { ShakingAPI, ShakingCodes } from 'react-native-dihola-shaking';

ShakingAPI.configure({

  ...
      
  onError: (error) => {

    switch(error){
      case ShakingCodes.LOCATION_PERMISSION_ERROR:
        // Do something
        break;
      case ShakingCodes.LOCATION_DISABLED:
        // Do something
        break;
      case ShakingCodes.AUTHENTICATION_ERROR:
        // Do something
        break;
      case ShakingCodes.API_KEY_EXPIRED:
        // Do something
        break;
      case ShakingCodes.SERVER_ERROR:
        // Do something
        break;
      case ShakingCodes.SENSOR_ERROR:
        // Do something
        break;
    }

  }
      
});

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

1.4.1

5 years ago

1.4.0

5 years ago

1.3.2

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.0

5 years ago

1.0.0

5 years ago