npm package: @nativescript/haptics
Description: Haptics for NativeScript
Author: NativeScript
Latest version: 3.1.0

# @nativescript/haptics

A plugin that allows you to add haptics to your app.

> Playing haptics can engage people's sense of touch and bring their familiarity with the physical world into your app or game.
~ Developer docs


Thanks to [Eddy Verbruggen](EddyVerbruggen) for providing [nativescript-taptic-engine](https://github.com/EddyVerbruggen/nativescript-taptic-engine) as this continues its evolution by streamlining the API and adding Android support, inspired by [react-native-haptic-feedback](https://github.com/junina-de/react-native-haptic-feedback).

## Contents

  * [Installation](#installation)
  * [Use @nativescript/haptics](#use-nativescripthaptics)
  * [API](#api)
    * [isSupported()](#issupported)
    * [selection()](#selection)
    * [notifcation()](#notification)
    * [impact()](#impact)
    * [HapticsFallback](#hapticsfallback)
      * [weakBoom()](#weakboom)
      * [strongBoom()](#strongboom)
      * [burst()](#burst)


## Installation

```cli
npm install @nativescript/haptics
```

## Use @nativescript/haptics

Find an example of `@nativescript/haptics` usage [here](https://stackblitz.com/edit/nativescript-stackblitz-templates-jlvtwm?file=app/main-view-model.ts) on StackBlitz. 

## API

The plugin provides the API below.

### isSupported()
```ts
isHapticsSupported: boolean = Haptics.isSupported()
```
Checks if haptics is supported on the device.

---
### selection()

```ts
import { Haptics } from "@nativescript/haptics";

Haptics.selection();
```

### notification()

```ts
import { Haptics, HapticNotificationType } from "@nativescript/haptics";

Haptics.notification(HapticNotificationType.ERROR);
```

Use notification feedback generators to indicate success, failure, and warning.

Other haptic notification types are:
- `SUCCESS`(default)
- `WARNING`

### impact()

```js
import { Haptics, HapticImpactType } from "@nativescript/haptics";

Haptics.impact(HapticImpactType.HEAVY);
```

Use impact feedback generators to indicate that an impact has occurred.
For example, you might trigger impact feedback when a user interface object
collides with something or snaps into place.

There are 3 impact types: 
- `LIGHT` 
- `MEDIUM` (default)
- `HEAVY`.

### HapticsFallback

To use the haptics fallbacks, check if there is support:

```ts
if (!Haptics.isSupported()) {
  // use HapticsFallback
}
```

__BEWARE__ This uses an undocumented feature that may get your app rejected when reviewed by Apple.
[People have used this approach __without problems__ though.](http://stackoverflow.com/questions/32526868/taptic-in-ios-9)

### weakBoom()
This triggers the same effect as the 'Peek' in 'Peek & Pop', a very brief vibration.

```ts
import { HapticsFallback } from "@nativescript/haptics";

HapticsFallback.weakBoom();
```

### strongBoom()
```ts
import { HapticsFallback } from "@nativescript/haptics";

HapticsFallback.strongBoom();
```
This triggers the `Pop` effect of `Peek & Pop`, which is a bit more profound than the `Peek` effect.

### burst()
```ts
import { HapticsFallback } from "@nativescript/haptics";

HapticsFallback.burst();
```
This triggers the `Nope` effect you get when force-touching a home icon that doesn't have any action. It's a short burst of 3-ish 'weak booms'.

## Changelog
* 3.0.0  Moved to @nativescript/haptics and added Android support. Adjusted naming conventions.
* 2.1.0  Modernized the code a little, migrated to the plugin seed structure, and added a Vue demo.
* 2.0.0  Added official API for iPhone 7. Moved the old API to TapticEngineUnofficial.*. Requires Xcode 8 to build.
* 1.0.0  Initial release, unofficial API only. Compatible with any Xcode version.

## License

Apache License Version 2.0