React Native вызывает входящий телефонный звонок пользователя при действии в приложении

У меня есть вопрос, который я решил, возможно, хакерским способом, и, возможно, есть лучший способ справиться с этим. У меня есть приложение на React Native, и имейте в виду, что прямо сейчас я использую Expo. То, что вы вводите номер телефона и сообщение, а с помощью лямбда-функции aws и точно определяете, что он отправит робот-звонок на этот номер с этим сообщением. Сейчас это всего лишь демонстрация, она не предназначена для такой работы в продакшене, и это не гнусно. Идея приложения основывается на этом рабочем процессе. Так что это действительно работает, но мне было интересно, есть ли способ, чтобы нативная реакция просто вызывала звонок телефона с поддельным номером. Или даже передать ему сообщение без использования лямбды. Если я не могу активировать собственный звонок, есть ли способ создать собственный интерфейс звонка, который мог бы отображаться, даже когда экран заблокирован или приложение закрыто. Таким образом, задержка после инициации вызова.

Что предлагается как лучший способ сделать это. Есть ли способы подключиться к микрофону и динамику с родным реагированием, передать запись и иметь для этого интерфейс.

Итак, три варианта

A) придерживайтесь лямбды, чтобы это был настоящий телефонный звонок, и чтобы он работал независимо от того, открыто ли приложение или телефон заблокирован.

B) Приложение запускает уведомление на телефон по таймеру, который отображает полноэкранный пользовательский интерфейс, который выглядит как телефонный звонок, на который вы можете ответить, а здесь сообщение о том, закрыто ли приложение или телефон заблокирован.

C) заставить приложение запускать настоящий звонок по телефону на таймере, в котором есть сообщение.

Спасибо, что прочитали это, и дайте мне знать, что возможно, и тогда я пойду в кроличью нору, пытаясь реализовать это.


person Anders Kitson    schedule 18.05.2020    source источник


Ответы (1)


Я считаю, что функция, которую вы ищете (в iOS), — это CallKit (https://developer.apple.com/documentation/calkit?language=objc) и ConnectionService в Android. Это используется в таких приложениях, как Whatsapp, Messenger, .... Эта функция не является готовой, встроенной в экспо, поэтому вам нужно использовать чистый рабочий процесс с интеграцией собственного кода (одна хорошая библиотека — это https://).github.com/react-native-webrtc/react-native-callkeep).

Если вы все еще хотите остаться на выставке, то я считаю вариант А наиболее приемлемым.

Что касается варианта B, я бы предположил, что это отправка уведомления в приложение, затем пользователь открывает его, и приложение открывается с пользовательским интерфейсом вызова (что также нормально)

Вариант C в принципе невозможен при «настоящем» телефонном звонке.

person Jarvis Luong    schedule 25.05.2020