我希望能够通过编程方式在React Native应用程序中以后台方式发送短信。
我知道如何在代码中正常发送短信,但应用程序会打开默认的短信应用程序,这不是我想要的。
用户不应该按任何按钮发送短信,因为我的目标是在用户执行特定任务时通知一个电话号码。
我尝试查看Twilio,但它们没有提供React Native的API。
有人知道如何做到这一点吗?
我希望能够通过编程方式在React Native应用程序中以后台方式发送短信。
我知道如何在代码中正常发送短信,但应用程序会打开默认的短信应用程序,这不是我想要的。
用户不应该按任何按钮发送短信,因为我的目标是在用户执行特定任务时通知一个电话号码。
我尝试查看Twilio,但它们没有提供React Native的API。
有人知道如何做到这一点吗?
根据kdenz的回答,我在这里跟着教程操作:设置firebase函数
以下是我的代码,用于在firebase数据库值“visible”发生变化时向Twilio发送请求。
import * as functions from 'firebase-functions';
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const twilio = require('twilio');
const accountSid = functions.config().twilio.sid;
const authToken = functions.config().twilio.token;
console.log(`Twilio account: ${accountSid}`);
const client = new twilio(accountSid, authToken);
const twilioNumber = 'xxx-xxx-xxx';
exports.textStatus = functions.database
.ref('/users/{userId}/data/visible')
.onUpdate(event => {
return admin.database()
.ref(`users/{userId}/data/`)
.once('value')
.then(snapshot => snapshot.val())
.then(user=> {
console.log(user[0]);
const longitude = user.longi;
const latitude = user.lati;
const phoneNumber = user.phone;
const textMessage = {
body: `See user position at Google: http://www.google.com/maps/place/${latitude},${longitude}`,
to: phoneNumber,
from: twilioNumber
}
return client.messages.create(textMessage);
})
.then(message => console.log(message.sid, 'success'))
.catch(err => console.log(err));
});
我认为这只有在Android上才可能实现,可以看到这个已经被弃用的包https://www.npmjs.com/package/react-native-send-sms
对于iOS,我认为不行,可以看到如何在用户授权后通过编程方式发送文本消息?
要实现你想要的功能,你需要像Twilio这样的短信服务。然后你可以设置一个服务器(或云函数,成本较低且易于维护),从RN应用接收API调用,并将消息发送给所需的收件人。您还可以设置一些安全措施,以防止黑客滥用API。
或者,如果您不关心安全性(我强烈不建议这样做),您可以直接在应用程序中调用Twilio发送消息API,这是危险的,因为黑客可以轻松提取您的Twilio授权令牌并将其用于自己发送消息。
在Android上,可以通过编程的方式无需用户交互
发送短信。
但是在iOS上,唯一可以在没有用户交互的情况下发送短信的方法是使用外部提供商,例如Twilio;但是消息将来自您服务器的号码,而不是用户的号码。
我已经回答了同类问题。看看这个有没有办法在Android和iOS上后台发送短信?