112 votes

Comment passer un appel téléphonique en React Native ?

Je veux appeler la valeur du composant Texte lorsque j'appuie dessus. Mais, en fait, je n'ai pas assez de connaissances pour cela.

Pouvez-vous, s'il vous plaît, me dire quelle bibliothèque ou quel composant je dois utiliser ?

enter image description here enter image description here

305voto

Tim Points 60

Si vous regardez le code source de react-native-phone-call il n'est finalement qu'une enveloppe pour.. :

import {Linking} from 'react-native'
Linking.openURL(`tel:${phoneNumber}`)

55voto

Aakash Daga Points 152

Vous pouvez utiliser cette méthode pour appeler des numéros dans Android et ios. Placez cette méthode dans un fichier utils et utilisez la méthode où vous voulez. cheers

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

export const callNumber = phone => {
  console.log('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));
};

**Mise à jour ( commentaire d'Andrey Patseiko) **

N'oubliez pas d'ajouter à Info.plist ->

<key>LSApplicationQueriesSchemes</key> 
<array> 
  <string>tel</string> 
  <string>telprompt</string> 
</array>

5 votes

Et n'oubliez pas d'ajouter à Info.plist -> <key>LSApplicationQueriesSchemes</key> <array> <string>tel</string> <string>telprompt</string> </array>.

0 votes

Merci beaucoup pour cette solution complète, et merci également à @AndreyPatseiko pour ses explications sur la clé Info.plist. Cette réponse est bien plus complète que celle qui a été étiquetée comme la "meilleure réponse".

0 votes

Fais juste ce que Tim a dit

26voto

hook zou Points 91

C'est très simple pour ios :

import {Linking} from 'react-native'

<Text onPress={()=>{Linking.openURL('tel:119');}} style={styles.funcNavText}>119</Text>

3 votes

Excellente réponse. Fonctionne aussi bien sur iOS que sur Android. Pas besoin d'importer la plateforme depuis react-native.

11voto

ramashish tomar Points 364
import React, { Component } from "react";
import {Linking,Platform,TouchableOpacity,Text} from "react-native";
export default class MakeCall extends Component {

 dialCall = (number) => {
    let phoneNumber = '';
    if (Platform.OS === 'android') { phoneNumber = `tel:${number}`; }
    else {phoneNumber = `telprompt:${number}`; }
    Linking.openURL(phoneNumber);
 };

 Render(){
        return(
                <TouchableOpacity
                   style={{
                   height: 30,
                   width: 30,
                   backgroundColor: "#329df4",
                   alignItems: "center",
                   justifyContent: "center",
                   borderRadius: 5
                   }}
                 onPress={()=>{this.dialCall(123456789)}}
                >
                <Text>Phone</Text>
                </TouchableOpacity>
              )
  }

}

4voto

Marco Points 190

Pas une vraie Réponse, mais je n'ai pas assez de rep pour commenter.

Qu'en est-il react-native-phone-call o react-native-communications ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X