Making Phone Calls in React Native: A Comprehensive Guide

Making Phone Calls in React Native: A Comprehensive Guide

17 December 2024 Stephan Petzl Leave a comment Tech-Help

Creating a feature to make phone calls directly from your React Native application can greatly enhance its functionality, offering users the ability to seamlessly connect with contacts or services. This guide will walk you through different methods to implement this feature, ensuring compatibility across both Android and iOS platforms.

Using the Linking Module

The most straightforward way to initiate a phone call in React Native is by using the Linking module. This method is not only simple but also effective for both Android and iOS devices.

Implementation Steps

  1. Import the Linking module from ‘react-native’.
  2. Create a function to handle the phone call action. Below is a basic example:
  3. import { Linking } from 'react-native';
    
    const dialCall = (number) => {
      let phoneNumber = '';
      if (Platform.OS === 'android') {
        phoneNumber = `tel:${number}`;
      } else {
        phoneNumber = `telprompt:${number}`;
      }
      Linking.openURL(phoneNumber);
    };
  4. Attach the function to a button or text component’s onPress event:
  5. <TouchableOpacity onPress={() => dialCall('1234567890')}>
      <Text>Call 1234567890</Text>
    </TouchableOpacity>

Additional Considerations

  • Ensure you have the necessary permissions set in your app’s configuration files. For iOS, you might need to add specific keys to the Info.plist file.
  • Consider using error handling to manage cases where the phone number cannot be dialed.

Advanced Method: Using a Utility Function

For more complex applications, you might want to encapsulate the phone call logic into a reusable utility function. This approach allows you to manage platform-specific behavior more effectively and maintain cleaner code.

import { Linking, Alert, Platform } from 'react-native';

export const callNumber = phone => {
  let phoneNumber = phone;
  if (Platform.OS !== 'android') {
    phoneNumber = `telprompt:${phone}`;
  } else {
    phoneNumber = `tel:${phone}`;
  }
  Linking.canOpenURL(phoneNumber)
    .then(supported => {
      if (!supported) {
        Alert.alert('Phone number is not available');
      } else {
        return Linking.openURL(phoneNumber);
      }
    })
    .catch(err => console.log(err));
};

Enhancing Your Development Workflow with Repeato

While integrating phone call functionality into your React Native app, testing across different devices and scenarios is crucial. This is where Repeato can play a significant role. As a no-code test automation tool, Repeato provides a fast and efficient way to create, run, and maintain automated tests for your mobile applications. By leveraging computer vision and AI, Repeato ensures that your app’s features, including phone calling, work flawlessly across all supported devices.

For more detailed insights on testing React Native applications, refer to our documentation.

Like this article? there’s more where that came from!