反应原生的电话

Posted

技术标签:

【中文标题】反应原生的电话【英文标题】:Phone call in react native 【发布时间】:2021-10-13 00:26:31 【问题描述】:

我想用 React Native 打电话,我是 React Native 的初学者,所以我遇到了这个看起来像我的问题 => How to make phone call in React Native?

所以,这是我的代码的一部分,但它不起作用,当我点击图标时,什么都没有发生,我的终端上也没有错误,这很奇怪。这是我的代码:

import React from 'react';
import  Image, Text, View, StyleSheet  from 'react-native';

import  Avatar  from "react-native-elements";
import  Linking  from 'react-native';

export const makeCall = () => 

    let phoneNumber = '';

    if (Platform.OS === 'android') 
        phoneNumber = 'tel:$0123456789';
     else 
        phoneNumber = 'telprompt:$0123456789';
    

    Linking.openURL(phoneNumber);
;

const Contacts = () => 

  return (
    <View style=styles.column>
       <Avatar
         size=65
         rounded
         overlayContainerStyle= backgroundColor: '#fff' 
         icon= name: 'phone', color: '#113D78', type: 'font-awesome' 
         onPress=() => makeCall
         style=
           width: 65,
           height: 65,
           borderRadius: 50,
           borderWidth: 2,
           borderColor: '#113D78',
         
     />
     <Text style=styles.subtitle>Phone</Text>
   </View>
);

导出默认联系人;

【问题讨论】:

【参考方案1】:

如果你有一个 phoneNumber 变量,看起来你没有为你的 phoneNumber 字符串使用反引号。现在您正在对数字进行硬编码,因此只需使用 tel:12345678 而不使用大括号和美元符号。此外,如果您使用更新的 react-native 版本,tel:$number 应该在两个平台上都可以使用。 并且请记住,ios 模拟器不支持打开通话,因此您必须在真机或 Android 上进行测试。

【讨论】:

感谢您的回复,我加了反引号并在手机上进行了测试,效果很好,但我使用的是电话:+3312345678!我认为它也适用于模拟器【参考方案2】:

你的问题在这里。在这个函数中

export const makeCall = () => 

    let phoneNumber = '';

    if (Platform.OS === 'android') 
        phoneNumber = 'tel:$0123456789';   // Error in this line
     else 
        phoneNumber = 'telprompt:$0123456789';
    

    Linking.openURL(phoneNumber);
;

应该是这样的

export const makeCall = () => 

    let phoneNumber = '';

    if (Platform.OS === 'android') 
        phoneNumber = `tel:$0123456789`;
     else 
        phoneNumber = `telprompt:$0123456789`;
    

    Linking.openURL(phoneNumber);
;

【讨论】:

【参考方案3】:

当您将phoneNumber 替换为您要拨打的号码时,这行代码应该适用于两个平台。

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

【讨论】:

以上是关于反应原生的电话的主要内容,如果未能解决你的问题,请参考以下文章

错误:verifier._reset 不是函数。尝试使用 Firebase 使用手机登录时,反应原生和 Expo

在拍摄多张照片时反应原生路由器通量和反应原生相机问题

使用故事书中的反应原生矢量图标反应原生 Web 问题

反应原生原生模块 RCTBubblingEventBlock 为空

原生基础文本与反应原生文本

如何使用 Android Studio 调试原生反应原生库?