React Native链接SMS

10 javascript react-native

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

尝试使用任何已安装的应用打开给定的网址.您可以使用其他URL,例如位置(例如"geo:37.484847,-122.148386"),联系人或可以使用已安装的应用程序打开的任何其他URL.

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

谢谢.

Dan*_*ite 9

你考虑过并尝试过sms:number?body=yourMessage吗?

您可以在RFC 5724中阅读它.

  • iOS上的分隔符似乎是"&".请参阅/sf/answers/3348418951/ (4认同)

Ron*_*tel 6

使用“ body”分隔符的平台之间存在差异,您可以使用以下代码使其起作用:

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" ? "&" : "?";
}
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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
}
Run Code Online (Sandbox Code Playgroud)