Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何以编程方式从React本机应用程序发送sms消息?_Reactjs_React Native_Twilio_Twilio Api - Fatal编程技术网

Reactjs 如何以编程方式从React本机应用程序发送sms消息?

Reactjs 如何以编程方式从React本机应用程序发送sms消息?,reactjs,react-native,twilio,twilio-api,Reactjs,React Native,Twilio,Twilio Api,我希望能够通过我的React原生应用程序在后台以编程方式发送短信 我知道如何在代码中正常发送短信,但应用程序一直打开默认的短信应用程序,这不是我想要的 用户不应该按任何按钮发送短信,因为我的目标是在每次用户在应用程序中执行特定任务时通知一个电话号码 我试过查看,但是他们没有为React Native提供api 有人知道我如何做到这一点吗?我认为这只有在Android上才可能实现,正如这个弃用的软件包所示 对于iOS,我不这么认为,正如在 为了实现你想要的,你需要像Twilio这样的短信服务。然后

我希望能够通过我的React原生应用程序在后台以编程方式发送短信

我知道如何在代码中正常发送短信,但应用程序一直打开默认的短信应用程序,这不是我想要的

用户不应该按任何按钮发送短信,因为我的目标是在每次用户在应用程序中执行特定任务时通知一个电话号码

我试过查看,但是他们没有为React Native提供api


有人知道我如何做到这一点吗?

我认为这只有在Android上才可能实现,正如这个弃用的软件包所示

对于iOS,我不这么认为,正如在

为了实现你想要的,你需要像Twilio这样的短信服务。然后,您可以设置一个服务器(或一个云功能,以实现最低成本+易于维护),该服务器从您的RN应用程序接收API调用,并将消息发送给所需的收件人。然后,您还可以设置一些安全措施,以防止黑客滥发API


或者,如果你不关心安全性(我强烈不推荐),你可以在你的应用程序中直接调用Twilio send message API,这是很危险的,因为黑客可以轻松提取你的Twilio授权令牌并使用它为自己发送消息。

根据kdenz的答案,我在这里学习了一个教程:

这是我在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上,可以通过编程方式从用户号码发送短信

但在IOS上,您可以发送短信而不需要用户交互的唯一方式是使用外部提供商,如Twilio;但是消息将来自服务器的号码,而不是用户

我已经回答了同样的问题。看看这个

你好,克登斯。非常感谢你的回答,我已经看到了这两个链接。我想我不明白如何让它工作,你是说,通过axios向TwilioAPI发送http请求可以做什么?或者我可以在AWS中设置Lambda函数吗?发送这样的短信似乎很复杂?也许,我应该放弃,让用户按下短信按钮。但这确实破坏了应用程序的用途,因为应用程序的任务是通知另一部手机,如果用户应用程序中发生了什么事情,而不强迫用户做任何事情。如果在此处更改值,使用firebase并发送短信怎么样?@Fris1978是的,也可以。你可以设置一个firebase云函数来监听特定的数据库值,当它改变时,它会自动通过twilio发送短信。再次,它终于成功了,只是按照本教程设置了firebase函数:谢谢分享。你找到在iOS上实现这一点的方法了吗?您好,ScreenWatcher,该功能是作为firebase功能制作的,如果android和iOS应用程序都是使用firebase设置的,那么它将同时适用于这两种应用程序。我用母语。