expo-haptics
provides haptic (touch) feedback for[[UIDevice currentDevice] valueForKey: @"_feedbackSupportLevel"]
so this is not added in ExpoConstants.platform.ios.systemVersion
or Constants.platform.ios.platform
Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
---|---|---|---|---|
→
expo install expo-haptics
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
VIBRATE
permission is added automatically.import * as React from 'react'; import { StyleSheet, View, Text, Button } from 'react-native'; import * as Haptics from 'expo-haptics'; export default function App() { return ( <View style={styles.container}> <Text style={styles.text}>Haptics.selectionAsync</Text> <View style={styles.buttonContainer}> <Button title='Selection' onPress={() => Haptics.selectionAsync() } /> </View> <Text style={styles.text}>Haptics.notificationAsync</Text> <View style={styles.buttonContainer}> <Button title='Success' onPress={() => Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success) } /> <Button title='Error' onPress={() => Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error) } /> <Button title='Warning' onPress={() => Haptics.notificationAsync(Haptics.NotificationFeedbackType.Warning) } /> </View> <Text style={styles.text}>Haptics.impactAsync</Text> <View style={styles.buttonContainer}> <Button title='Light' onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light) } /> <Button title='Medium' onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium) } /> <Button title='Heavy' onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy) } /> </View> </View> ); } %%placeholder-start%%const styles = StyleSheet.create({ ... }); %%placeholder-end%%const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', paddingHorizontal: 16, }, buttonContainer: { flexDirection: 'row', alignItems: 'stretch', marginTop: 10, marginBottom: 30, justifyContent: 'space-between' }, });
import * as Haptics from 'expo-haptics';
Name | Type | Description |
---|---|---|
style | ImpactFeedbackStyle | A collision indicator that on iOS is directly mapped to UIImpactFeedbackStyle ,
while on Android these are simulated using Vibrator.
You can use one of Haptics.ImpactFeedbackStyle.{Light, Medium, Heavy} . |
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
Name | Type | Description |
---|---|---|
type | NotificationFeedbackType | A notification feedback type that on iOS is directly mapped to UINotificationFeedbackType,
while on Android these are simulated using Vibrator.
You can use one of Haptics.NotificationFeedbackType.{Success, Warning, Error} . |
The kind of notification response used in the feedback.
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
Used to let a user know when a selection change has been registered.
Promise<void>
A Promise
which fulfils once native size haptics functionality is triggered.
The mass of the objects in the collision simulated by a UIImpactFeedbackGenerator object
UINotificationFeedbackStyle
Heavy
- A collision between large, heavy user interface elements.ImpactFeedbackStyle.Heavy = "heavy"
Light
- A collision between small, light user interface elements.ImpactFeedbackStyle.Light = "light"
Medium
- A collision between moderately sized user interface elements.ImpactFeedbackStyle.Medium = "medium"
The type of notification feedback generated by a UINotificationFeedbackGenerator object.
UINotificationFeedbackType
Error
- A notification feedback type indicating that a task has failed.NotificationFeedbackType.Error = "error"
Success
- A notification feedback type indicating that a task has completed successfully.NotificationFeedbackType.Success = "success"
Warning
- A notification feedback type indicating that a task has produced a warning.NotificationFeedbackType.Warning = "warning"