Javascript 反应本机链接短信
既然RN支持跨平台链接,我想知道如何发送带有预设消息的SMS。根据文件(): 尝试使用任何已安装的应用打开给定的url。 您可以使用其他URL,如位置(例如“geo:37.484847,-122.148386”)、联系人或任何其他可使用已安装应用打开的URL 我的问题是,我应该遵循什么URI方案来打开带有预定义消息的SMS?是跨站台的吗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上的
谢谢。您是否考虑过并尝试过
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块中。此链接可能会帮助您: