如何在 React-Native 中为多个 phone 号码触发 SMS URI 重定向?
How to trigger SMS URI redirect in React-Native for multiple phone numbers?
所以基本上我有一个已经适用于 android 设备的代码,其目的是触发设备的 messaging/sms 应用程序,其中包含预填充的文本。这也会在 iOS 上打开 iMessage 应用程序,消息已经预填成功,但不幸的是它不支持多个 phone 号码。
以下代码目前是我正在尝试做的事情的示例。 generateURI()
的返回值稍后用于反应本机的 Linking.openURL()
命令。
export function generateURI(arrayOfPhoneNumbers, event) {
var url = `sms:`
for(var i = 0; i < arrayOfPhoneNumbers.length; i++) {
url += `${arrayOfPhoneNumbers[i]},`
}
url = url.slice(0, -1); //remove last comma
url += `${getSMSDivider()}body=Test Message`
return url
}
function getSMSDivider() {
return Platform.OS === "ios" ? "&" : "?";
}
注意事项:
Apple 似乎不尊重许多 URI 方案模式和标准,因为它们列在以下 link:https://www.rfc-editor.org/rfc/rfc5724 中。例如:每个短信字段都应使用字符 ?
,但对于 iOS 设备只有 &
有效,最重要的是,如果您将字符串值编码为 body=
属性,android 理解得很好,但 iPhone 不理解。因此,不幸的是,在处理 Apple 自己的规则手册时,查看文档化标准并不是一个可行的解决方案。
苹果还有一个很奇怪的声明说The URL string must not include any message text or other information.
在下面link https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html
但这并不意味着它们不支持多个 phone 号码。
这对我有用:
let numbers = '';
contacts.forEach((phoneNumber: string) => {
numbers += `${phoneNumber},`;
});
numbers = numbers.slice(0, -1);
const url = (Platform.OS === 'android')
? `sms:${numbers}?body=${text}`
: `sms:/open?addresses=${numbers}&body=${text}`;
所以基本上我有一个已经适用于 android 设备的代码,其目的是触发设备的 messaging/sms 应用程序,其中包含预填充的文本。这也会在 iOS 上打开 iMessage 应用程序,消息已经预填成功,但不幸的是它不支持多个 phone 号码。
以下代码目前是我正在尝试做的事情的示例。 generateURI()
的返回值稍后用于反应本机的 Linking.openURL()
命令。
export function generateURI(arrayOfPhoneNumbers, event) {
var url = `sms:`
for(var i = 0; i < arrayOfPhoneNumbers.length; i++) {
url += `${arrayOfPhoneNumbers[i]},`
}
url = url.slice(0, -1); //remove last comma
url += `${getSMSDivider()}body=Test Message`
return url
}
function getSMSDivider() {
return Platform.OS === "ios" ? "&" : "?";
}
注意事项:
Apple 似乎不尊重许多 URI 方案模式和标准,因为它们列在以下 link:https://www.rfc-editor.org/rfc/rfc5724 中。例如:每个短信字段都应使用字符 ?
,但对于 iOS 设备只有 &
有效,最重要的是,如果您将字符串值编码为 body=
属性,android 理解得很好,但 iPhone 不理解。因此,不幸的是,在处理 Apple 自己的规则手册时,查看文档化标准并不是一个可行的解决方案。
苹果还有一个很奇怪的声明说The URL string must not include any message text or other information.
在下面link https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html
但这并不意味着它们不支持多个 phone 号码。
这对我有用:
let numbers = '';
contacts.forEach((phoneNumber: string) => {
numbers += `${phoneNumber},`;
});
numbers = numbers.slice(0, -1);
const url = (Platform.OS === 'android')
? `sms:${numbers}?body=${text}`
: `sms:/open?addresses=${numbers}&body=${text}`;