Как заставить Twilio Video API Javascript SDK + Phonegap Build работать?

Мне удалось интегрировать Twilio Video API, и аудиовызовы работают как веб-приложение. Однако, когда я пытаюсь создать его для мобильных устройств с помощью Phonegap Build, аудиозвонки не работают должным образом. С помощью метода отладки USB Chrome Dev Tools не было сообщено об ошибках.

Работает:

  • Вызов из Интернета в Интернет из Интернета в мобильное приложение (я четко слышу звонок с любого конца)

Не работает:

  • Мобильный в Интернете (нет звука вообще, я слышу только голос того, кто звонит через Интернет)
  • Мобильный на мобильный (вообще ничего)

Сначала Twilio Video API не работает в приложении Phonegap и возвращает undefined на twilio-conversations.min.js. Я смог исправить это, добавив Crosswalk <plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0" source="npm" />, так как я подозреваю, что это как-то связано с webrtc. После добавления этого плагина Twilio теперь может создавать разговор и подключать обоих участников.

Я не могу понять, что делать дальше. Я попытался добавить cordova-plugin-media-capture для захвата звука и активировать «разрешение на запись звука», но все равно не повезло.

Может быть, я что-то упускаю. Любое предложение очень ценится. :)

Вот мой Phonegap config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<widget xmlns   = "http://www.w3.org/ns/widgets"
    xmlns:gap   = "http://phonegap.com/ns/1.0"
    id          = "com.app.experiment"
    versionCode = "1"
    version     = "1.0.0">

    <name>Twilio Phonegap Experiment</name>

    <description>
            Twilio Phonegap Testing
    </description>
    <author href="https://domainhere.com" email="[email protected]">
             woppi
    </author>

    <platform name="android"/>
    <preference name="phonegap-version" value="cli-6.3.0" />
    <preference name="orientation" value="portrait" />
    <preference name="fullscreen" value="false" />

    <preference name="webviewbounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="disallowOverscroll" value="true" />

    <preference name="android-minSdkVersion" value="21" />
    <preference name="android-installLocation" value="auto" />

    <platform name="android">
        <icon src="res/icon/android/drawable-ldpi-icon" qualifier="ldpi"/>
        <icon src="res/icon/android/drawable-mdpi-icon" qualifier="mdpi"/>
        <icon src="res/icon/android/drawable-hdpi-icon" qualifier="hdpi"/>
        <icon src="res/icon/android/drawable-xhdpi-icon" qualifier="xhdpi"/>
        <icon src="res/icon/android/drawable-xxhdpi-icon" qualifier="xxhdpi"/>
        <icon src="res/icon/android/drawable-xxxhdpi-icon" qualifier="xxxhdpi"/>
    </platform>

      <platform name="android">
        <splash src="res/screen/android/drawable-port-ldpi-screen" qualifier="ldpi"/>
        <splash src="res/screen/android/drawable-port-mdpi-screen" qualifier="mdpi"/>
        <splash src="res/screen/android/drawable-port-hdpi-screen" qualifier="hdpi"/>
        <splash src="res/screen/android/drawable-port-xhdpi-screen" qualifier="xhdpi"/>
        <splash src="res/screen/android/drawable-port-xxhdpi-screen" qualifier="xxhdpi"/>
        <splash src="res/screen/android/drawable-port-xxxhdpi-screen" qualifier="xxxhdpi"/>
      </platform>

      <preference name="permissions" value="none"/>

      <plugin name="cordova-plugin-camera" spec="~2.1.1" source="npm"/>
      <plugin name="cordova-plugin-device" spec="~1.1.1" source="npm"/>
      <plugin name="cordova-plugin-dialogs" spec="~1.2.0" source="npm"/>
      <plugin name="cordova-plugin-geolocation" spec="~2.1.0" source="npm"/>
      <plugin name="cordova-plugin-inappbrowser" spec="~1.3.0" source="npm"/>
      <plugin name="cordova-plugin-network-information" spec="1.2.0" source="npm"/>
      <plugin name="cordova-plugin-splashscreen" spec="~3.2.1" source="npm"/>
      <plugin name="cordova-plugin-statusbar" spec="~2.1.2" source="npm"/>
      <plugin name="cordova-plugin-whitelist" spec="~1.2.1" source="npm"/>
      <plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0" source="npm" />
      <plugin name="cordova-plugin-media-capture" spec="~1.4.0" source="npm" />

      <access origin="*" subdomains="true"/>
      <allow-intent href="http://*/*"/>
      <allow-intent href="https://*/*"/>
      <allow-intent href="tel:*"/>
      <allow-intent href="sms:*"/>
      <allow-intent href="mailto:*"/>
      <allow-intent href="geo:*"/>
      <platform name="android">
        <allow-intent href="market:*"/>
      </platform>
</widget>

person Woppi    schedule 21.10.2016    source источник
comment
Вам когда-нибудь удавалось это решить?   -  person    schedule 09.11.2016
comment
@Alexander Pritchard Нет. Пробовал множество комбинаций с разрешением звука и не мог придумать, что еще делать. Я также отправил электронное письмо по адресу [email protected] несколько недель назад, но до сих пор не получил ответа. К сожалению, мне пришлось отказаться от всего, что я сделал для телефонного разговора, и решил пойти по собственному пути, изучить разработку для Android/java, а затем использовать их Android SDK. Я только начинаю снова. О, парень!   -  person Woppi    schedule 09.11.2016
comment
Мне жаль это слышать. В настоящее время я работаю над проектом производственного уровня с фиксированным бюджетом. Это позор, так как это может повлиять на то, сможем ли мы выпустить эту функцию для клиента без необходимости нести затраты на себя.   -  person    schedule 09.11.2016
comment
Да, я пытался найти другие альтернативы Twilio, чтобы я мог по-прежнему использовать гибридное приложение и просто сменить поставщика, но даже Sinch не поддерживает телефонную связь, согласно моему запросу. :) Я пробовал и Android SDK, и у Sinch более четкий прием на мобильных устройствах, чем у Twilio, а также стабильный API. Я приму решение, как только займусь этой частью проекта. Удачи с проектом. :) Рад, что мой неудачный опыт помог кому-то принять решение няхаха :p   -  person Woppi    schedule 09.11.2016
comment
Я следил за этим. используя adb logcat для получения журнала с устройства, я увидел, что мне нужны дополнительные разрешения, запрошенные для доступа к аудио- и видеоустройствам. (В частности, MODIFY_AUDIO_SETTINGS до того, как RECORD_AUDIO сможет фактически получить устройство.) Использовал этот плагин, чтобы получить все эти разрешения: npmjs.com/package/cordova-opentok-android-permissions А затем этот плагин для запроса разрешений во время выполнения: npmjs.com/package/cordova-opentok-android-permissions Я постараюсь дать более подробный ответ позже. Мы заняты, пытаясь получить это на iOS.   -  person    schedule 22.11.2016
comment
@AlexanderPritchard Хорошо! Спасибо, что поделились, может быть, я попробую еще раз, когда у меня будет время. Я также занят созданием приложения для Android. :)   -  person Woppi    schedule 22.11.2016
comment
@AlexanderPritchard есть новости по этому поводу? У вас получилось?   -  person cobberboy    schedule 08.05.2017
comment
@cobberboy мы привели к тому, что вместо phonegap мы сделали нативный, поскольку twilio js sdk не работает через phonegap, только через Интернет, он подключается, но звук не слышен.   -  person Woppi    schedule 08.05.2017
comment
Спасибо @Woppi, приятно знать.   -  person cobberboy    schedule 08.05.2017
comment
Мне очень грустно сообщать, что я в той же лодке... Все отлично работает в браузере, но как только я подключаюсь к устройству, я теряю звук. У меня есть все необходимые разрешения, установленные/запрошенные во время выполнения, но никакая комбинация вещей не работает для меня. Должен быть способ!   -  person Nicholas Kreidberg    schedule 03.07.2017
comment
@NicholasKreidberg да, вот почему мы стали родными ... Я пытался найти решение, кажется, две недели ... это был действительно напряженный момент, так как я уже добился прогресса, и это было серьезным препятствием. Ха-ха. В любом случае, удачи.   -  person Woppi    schedule 05.07.2017
comment
@Woppi Наконец-то я разобрался со своей проблемой, и аудио/видео работает на Android с использованием Cordova/Ionic/Twilio-Video-JS, информация здесь: stackoverflow.com/questions/35344819/< /а>   -  person Nicholas Kreidberg    schedule 06.07.2017


Ответы (1)


Я считаю, что для этого вам потребуется создать плагин Phonegap для видео SDK. На GitHub есть проект для Twilio Client SDK. Я успешно использовал этот плагин для разработки приложения Cordova с использованием Клиент Twilio для Android и IOS. Может быть, вы могли бы разработать плагин самостоятельно.

Надеюсь это поможет!

person Thev    schedule 14.11.2016
comment
Я пошел по пути Android SDK для мобильного приложения. - person Woppi; 14.11.2016