现在RN支持跨平台链接,我想知道如何使用预设消息发送短信。根据文档(https://facebook.github.io/react-native/docs/linking.html#content):
尝试使用任何已安装的应用打开指定的网址。 您可以使用其他网址,例如位置(例如"地理位置:37.484847,-122.148386"),联系人或可以使用已安装的应用打开的任何其他网址。
我的问题是,我使用什么URI方案打开带有预定义消息的短信?它是跨平台的吗?
谢谢。
答案 0 :(得分:9)
您是否考虑并尝试了sms:number?body=yourMessage
?
您可以在RFC 5724中阅读。
答案 1 :(得分:6)
带有“主体”分隔线的平台之间存在差异 您可以使用以下代码使其正常工作:
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" ? "&" : "?";
}
答案 2 :(得分:2)
非常确定这不是React Native特定的,而只是在Android上进行链接。看看:SMS URL on Android
答案 3 :(得分:2)
我创建了一个发送短信的钩子:
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
}
答案 4 :(得分:1)
或者您可以简单地完成
url = `sms:${context.provider.state.driverPhoneNo}${Platform.OS === "ios" ? "&" : "?"}body=${""}`
Linking.openURL(url);
答案 5 :(得分:1)
这应该适用于两个平台
const operator = Platform.select({ios: '&', android: '?'});
Linking.openURL(`sms:${operator}body=${options.title}`);
答案 6 :(得分:0)
您可以查看react-packages react-native-communications(https://github.com/anarchicknight/react-native-communications)。您可以整合整个包或部分包