Как реализовать поведение CallKit на Android с помощью React Native?

У меня есть приложение, написанное на react-native, для обработки вызовов Voip между пользователями. Мне нужно разбудить приложение после push-уведомления и показать экран, чтобы принять / отклонить вызов.

В iOS есть callkit, есть ли что-нибудь подобное для Android?


person Fabrizio Rizzonelli    schedule 08.09.2017    source источник
comment
Вообще говоря, похоже, что просто BroadcastReceiver подойдет   -  person OneCricketeer    schedule 08.09.2017


Ответы (1)


После некоторых исследований я пришел к решению, которое объединяет собственный код Android с собственным приложением. Прежде всего я использовал WakefulBroadcastReceiver, чтобы разбудить наш процесс активности после получения push-уведомления, затем с помощью службы я запускаю ReactActivity и показываю настраиваемый экран, написанный на Java, для обработки принятия / отклонения вызов.

Я написал об этом сообщение в блоге с in- пример глубины.

person Fabrizio Rizzonelli    schedule 08.09.2017
comment
Здравствуйте, можете ли вы опубликовать исходный код для реагирования на родной Android на github? Я следил за кодом из вашего сообщения в блоге, но, к сожалению, мое приложение не сработало. Я считаю, что мне что-то не хватает на стороне Java, и очень полезно сравнить с вашим исходным кодом. Большое спасибо :) - person Pewh Gosh; 18.09.2017
comment
@PewhGosh на данный момент я не могу создать подходящий пример для github (не хватает времени) ???? Не могли бы вы опубликовать здесь свою ошибку? Так что я постараюсь помочь тебе - person Fabrizio Rizzonelli; 20.09.2017
comment
Я не могу следить за публикацией в блоге по той же причине. Репозиторий Github будет действительно полезен - person Dani Akash; 11.10.2017
comment
@DaniAkash Не могли бы вы дать мне дополнительную информацию о вашей ошибке? Я хотел бы вам помочь, но я не могу создать репо на git :( - person Fabrizio Rizzonelli; 12.10.2017
comment
Привет @FabrizioRizzonelli, в классе PusherReceiver, почему переменная notificationData является init, но не используется? И затем, могу ли я автоматически перенаправить в представление React Native (с помощью маршрутизатора response-native-navigation) вместо создания пользовательского XML-интерфейса в UnlockScreenActivity? Я должен получить доступ к React Native View, потому что я могу получить доступ к redux, что, к сожалению, не может быть выполнено с помощью собственного Android. - person Pewh Gosh; 22.01.2018
comment
Мне также любопытно, работает ли он, если в onCreate UnlockScreenActivity он автоматически запускает глубокую ссылку (затем открывает представление RN) вместо показа setContentView(R.layout.activity_call_incoming)? Я не использую здесь response-native-navigation. И будет ли телефон снова выключать экран с помощью метода глубокой ссылки (когда состояние - экран блокировки)? - person Pewh Gosh; 22.01.2018
comment
@PewhGosh В моем случае использования я использовал встроенную навигацию, поэтому был сделан некоторый выбор, потому что я использую эту библиотеку. Тем не менее, я не думаю, что вы можете напрямую отображать представление RN на настраиваемом экране, возможно, вы можете использовать собственный Android для запуска рендеринга представления RN, но я этого не пробовал :) - person Fabrizio Rizzonelli; 23.01.2018
comment
@PewhGosh Между прочим, зачем вам редукция в представлении ответа на вызов? Разве нельзя просто передать необходимые данные через собственные события? Я не думаю, что это представление должно взаимодействовать с состоянием редукции, или я что-то упускаю? - person Fabrizio Rizzonelli; 23.01.2018
comment
@Fabrizio Rizzonelli, мне нужно сначала задать один вопрос, спасибо за такую ​​замечательную статью, которая очень помогла, в искусстве я очень следил за вами, но я застрял, когда вы расширяете NatigationActivity, я не использую wix nativigation, так что мне следует расширять вместо NatigationActivity, а мы не делаем нужно создать новый файл MainApplication, верно? нам просто нужно использовать существующий файл MainApplication, который создается по умолчанию? и простите меня, если вы думаете, что я задал глупый вопрос, потому что я не разработчик Java - person Muhammad Shaheem; 15.10.2018
comment
@MuhammadShaheem Спасибо, очень признателен :) Кстати, вы должны расширить Activity по умолчанию, созданную из RN, а также отредактировать MainApplication.java, не создавая новый! - person Fabrizio Rizzonelli; 16.10.2018
comment
@Fabrizio Rizzonelli есть ли способ получить намерение в mainApplication, которое я передал в MainActivity? - person Muhammad Shaheem; 16.10.2018
comment
@Fabrizio Rizzonelli, если я смогу понять свое намерение, которое я передал в MainActivity, я могу легко использовать свою реакцию-нативную активность с некоторыми условиями, такими как установка флага для моей MianActivity - person Muhammad Shaheem; 16.10.2018
comment
@MuhammadShaheem Это зависит от того, используете ли вы какую-нибудь библиотеку для навигации? - person Fabrizio Rizzonelli; 16.10.2018
comment
@FabrizioRizzonelli да, я использую реагирующую навигацию - person Muhammad Shaheem; 16.10.2018
comment
@FabrizioRizzonelli WakefulBroadcastReceiver больше не поддерживается. Я использую библиотеки react-native и response-native-pjsip для обработки VoIP, а также систему response-native-push-notification, но не может понять это для уведомления, если приложение не просыпается. PS: Я новичок в разработке мобильных приложений и не знаком с java. - person Ajay Kumar; 09.01.2019