# Vibration Plugin

Tested Version: [3.1.1](https://github.com/apache/cordova-plugin-vibration/releases/tag/3.1.1)

{% hint style="info" %}
This document is based on the original Cordova docs available at [Cordova Docs](https://github.com/apache/cordova-plugin-vibration).
{% endhint %}

This plugin aligns with the [W3C vibration specification](http://www.w3.org/TR/vibration/).

This plugin provides a way to vibrate the device.

This plugin defines global objects including `navigator.vibrate`.

Although in the global scope, they are not available until after the `deviceready` event.

```javascript
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(navigator.vibrate);
}
```

## Plugin ID

```javascript
cordova-plugin-vibration
```

## Adding the Plugin in Monaca

In order to use this plugin, please [enable](/products_guide/monaca_ide/dependencies/cordova_plugin.md#importing-cordova-plugins) `Vibration` plugin in Monaca Cloud IDE.

## Supported Platforms

* Android
* iOS

{% hint style="info" %}
`navigator.notification.vibrateWithPattern` & `navigator.notification.cancelVibration` are not working on iOS platform.
{% endhint %}

## API Reference

### vibrate (recommended)

This function has three different functionalities based on parameters passed to it.

### Standard vibrate

Vibrates the device for a given amount of time.

```javascript
    navigator.vibrate(time)
```

or

```javascript
    navigator.vibrate([time])
```

* **time**: Milliseconds to vibrate the device. *(Number)*

#### Example

```javascript
    // Vibrate for 3 seconds
    navigator.vibrate(3000);

    // Vibrate for 3 seconds
    navigator.vibrate([3000]);
```

#### iOS Quirks

* **time**: Ignores the specified time and vibrates for a pre-set amount of time.

  `javascriptnavigator.vibrate(3000); // 3000 is ignored`

### Vibrate with a pattern (Android only)

Vibrates the device with a given pattern

```javascript
    navigator.vibrate(pattern);
```

* **pattern**: Sequence of durations (in milliseconds) for which to turn on or off the vibrator. *(Array of Numbers)*

#### Example

```javascript
    // Vibrate for 1 second
    // Wait for 1 second
    // Vibrate for 3 seconds
    // Wait for 1 second
    // Vibrate for 5 seconds
    navigator.vibrate([1000, 1000, 3000, 1000, 5000]);
```

### Cancel vibration (not supported in iOS)

Immediately cancels any currently running vibration.

```javascript
    navigator.vibrate(0)
```

or

```javascript
    navigator.vibrate([])
```

or

```javascript
    navigator.vibrate([0])
```

Passing in a parameter of 0, an empty array, or an array with one element of value 0 will cancel any vibrations.

### notification.vibrate (deprecated)

Vibrates the device for a given amount of time.

```javascript
    navigator.notification.vibrate(time)
```

* **time**: Milliseconds to vibrate the device. *(Number)*

#### Example

```javascript
    // Vibrate for 2.5 seconds
    navigator.notification.vibrate(2500);
```

#### iOS Quirks

* **time**: Ignores the specified time and vibrates for a pre-set amount of time.

```javascript
    navigator.notification.vibrate();
    navigator.notification.vibrate(2500);   // 2500 is ignored
```

### notification.vibrateWithPattern (deprecated)

Vibrates the device with a given pattern.

```javascript
    navigator.notification.vibrateWithPattern(pattern, repeat)
```

* **pattern**: Sequence of durations (in milliseconds) for which to turn on or off the vibrator. *(Array of Numbers)*
* **repeat**: Optional index into the pattern array at which to start repeating (will repeat until canceled), or -1 for no repetition (default). *(Number)*

#### Example

```javascript
// Immediately start vibrating
// vibrate for 100ms,
// wait for 100ms,
// vibrate for 200ms,
// wait for 100ms,
// vibrate for 400ms,
// wait for 100ms,
// vibrate for 800ms,
// (do not repeat)
navigator.notification.vibrateWithPattern([0, 100, 100, 200, 100, 400, 100, 800]);
```

### notification.cancelVibration (deprecated)

Immediately cancels any currently running vibration.

```javascript
    navigator.notification.cancelVibration()
```

{% hint style="info" %}
Due to alignment with w3c spec, the starred methods will be phased out.
{% endhint %}

See Also:

* [Third-party Cordova Plugins](/reference/third_party_phonegap.md)
* [Core Cordova Plugins](/reference/core-cordova-plugins.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://en.docs.monaca.io/reference/core-cordova-plugins/cordova_10.0/vibration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
