ProVibration
JVDLUK
NativePHP^3.0iOS13.0+Android24+
A haptic vibration library for NativePHP Mobile with iOS Core Haptics and Android VibrationEffect support.
Features
- Fine-grained control over vibration duration, intensity, and sharpness
- Runtime haptic capability detection
- Vibration cancellation
- Fluent pattern builder with pause support
- Built-in presets:
success,error,warning,notification,double_click - Event dispatching on completion
Installation
composer require jvdluk/pro-vibration
php artisan vendor:publish --tag=nativephp-plugins-provider
php artisan native:plugin:register jvdluk/pro-vibration
PHP Usage
use Jvdluk\ProVibration\Facades\ProVibration;
// Check support
if (ProVibration::hasHaptics()) {
ProVibration::vibrate(duration: 500, intensity: 0.8);
}
// Pattern builder
ProVibration::pattern()
->vibrate(100, 0.8, 0.5)
->pause(50)
->vibrate(200, 1.0)
->play();
// Preset
ProVibration::preset('success')->play();
// Cancel
ProVibration::cancelVibration();
JavaScript Usage
import { proVibration } from '@jvdluk/pro-vibration';
if (await proVibration.hasHaptics()) {
await proVibration.vibrate(500, 0.8, 0.5);
await proVibration.playPattern([
{ type: 'vibrate', duration: 50, intensity: 0.6, sharpness: 0.5 },
{ type: 'pause', duration: 80 },
{ type: 'vibrate', duration: 80, intensity: 0.8 },
]);
}
API
| Method | Description |
|---|---|
vibrate(int $duration, float $intensity, ?float $sharpness) |
Single vibration; duration 1–5000 ms, intensity 0.0–1.0, sharpness iOS only |
hasHaptics(): bool |
Detect device support |
cancelVibration(): bool |
Stop active vibration |
pattern(array $steps): VibrationPatternBuilder |
Build a step sequence |
preset(string|VibrationPreset $preset) |
Use a named preset |
Compatibility
| Platform | Minimum Version |
|---|---|
| NativePHP | ^3.0 |
| iOS | 13.0+ |
| Android | 24+ |
Sharpness parameter is iOS only; Android ignores it.
Events
VibrationCompleted
Fired when a single vibration finishes. Payload: int $duration, float $intensity, ?float $sharpness.
PatternCompleted
Fired when a pattern finishes. Payload: int $totalDuration (ms), int $stepCount.