React Native链接SMS

时间:2016-03-22 19:52:27

标签: javascript react-native

现在RN支持跨平台链接,我想知道如何使用预设消息发送短信。根据文档(https://facebook.github.io/react-native/docs/linking.html#content):

  

尝试使用任何已安装的应用打开指定的网址。   您可以使用其他网址,例如位置(例如"地理位置:37.484847,-122.148386"),联系人或可以使用已安装的应用打开的任何其他网址。

我的问题是,我使用什么URI方案打开带有预定义消息的短信?它是跨平台的吗?

谢谢。

7 个答案:

答案 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)。您可以整合整个包或部分包