Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应本机链接短信_Javascript_React Native - Fatal编程技术网

Javascript 反应本机链接短信

Javascript 反应本机链接短信,javascript,react-native,Javascript,React Native,既然RN支持跨平台链接,我想知道如何发送带有预设消息的SMS。根据文件(): 尝试使用任何已安装的应用打开给定的url。 您可以使用其他URL,如位置(例如“geo:37.484847,-122.148386”)、联系人或任何其他可使用已安装应用打开的URL 我的问题是,我应该遵循什么URI方案来打开带有预定义消息的SMS?是跨站台的吗 谢谢。您是否考虑过并尝试过sms:number?body=yourMessage 您可以在中阅读。非常确定这不是React本机特有的,只是关于Android上的

既然RN支持跨平台链接,我想知道如何发送带有预设消息的SMS。根据文件():

尝试使用任何已安装的应用打开给定的url。 您可以使用其他URL,如位置(例如“geo:37.484847,-122.148386”)、联系人或任何其他可使用已安装应用打开的URL

我的问题是,我应该遵循什么URI方案来打开带有预定义消息的SMS?是跨站台的吗


谢谢。

您是否考虑过并尝试过
sms:number?body=yourMessage


您可以在中阅读。

非常确定这不是React本机特有的,只是关于Android上的链接。查看:

您可以查看react包react-native-communications()。您可能可以集成整个软件包或部分软件包

使用“主体”分隔器的平台之间存在差异 您可以使用以下代码使其工作:

function openUrl(url: string): Promise<any> {
  return Linking.openURL(url);
}
export function openSmsUrl(phone: string, body: string): Promise<any> {
  return openUrl(`sms:${phone}${getSMSDivider()}body=${body}`);
}
function getSMSDivider(): string {
  return Platform.OS === "ios" ? "&" : "?";
}
函数openUrl(url:string):Promise{ 返回Linking.openURL(url); } 导出函数openSmsUrl(电话:字符串,正文:字符串):承诺{ 返回openUrl(`sms:${phone}${getSMSDivider()}body=${body}`); } 函数getSMSDivider():字符串{ return Platform.OS==“ios”?&:“?”; } 或者您只需

url = `sms:${context.provider.state.driverPhoneNo}${Platform.OS === "ios" ? "&" : "?"}body=${""}`

Linking.openURL(url);

我创建了一个钩子来发送短信:

import { useCallback } from 'react'
import { Linking, Platform } from 'react-native'

export default () => {
  const onSendSMSMessage = useCallback(async (phoneNumber, message) => {
    const separator = Platform.OS === 'ios' ? '&' : '?'
    const url = `sms:${phoneNumber}${separator}body=${message}`
    await Linking.openURL(url)
  }, [])

  return onSendSMSMessage
}

这应该在两种平台上都适用

 const operator = Platform.select({ios: '&', android: '?'});
 Linking.openURL(`sms:${operator}body=${options.title}`);

可能的重复不是完全重复,因为问题需要跨平台解决方案,事实上iOS略有不同。如果您希望用户从联系人中选择,请参阅我的,iOS上的分隔符似乎是
&
。看看如何使用这个钩子?1-为钩子创建一个文件。它可以在您想要使用的组件中称为“useSendSMS”2-Import。3-执行钩子。它将返回接收电话号码和消息的异步函数。由于它是一个异步函数,请确保将执行包装在try-catch块中。此链接可能会帮助您: