Возможно, заголовок вопроса считается недействительным , но мы потратили 4-5 дней на его устранение.Вот контекст:
- У нас есть гибридное приложение (Ionic3 + Cordova)
- У нас есть оператор телекоммуникационной сети в Европе
- Мы предоставили им URLбыть в белом списке, который обогащен заголовком (оператором связи) номера мобильного телефона пользователя при каждом обращении к этому URL, когда пользователь использует мобильную сеть этого оператора
- Этот URL должен быть http URL не https
- Поэтому мы добавили в нашу кодовую базу угловой HTTP-перехватчик для преобразования https в http только для этого URL-адреса
- Мобильное приложение для Android сразу же обращается к этому URL-адресукак приложение запускается
Теперь здесь работает / ожидаемое поведение:
Когда приложение запускается заново (не в фоновом режиме или было убито домашним экраном), приложение переходит на этот URL, и сетевой оператор идентифицирует этот URL, и мы получаем номер мобильного телефона пользователя.
Вот сценарий, который не работает:
Теперь мы нажимаем баНажмите кнопку в Android и выйдите из приложения изящно.Это означает, что приложение Android находится в фоновом режиме и убито.Теперь мы снова запускаем приложение из значка приложения, и это обогащение заголовка не работает.
Теперь мы добавили различные журналы уровня TCP, используя команду tcpflow
:
sudo tcpflow -i eth0 port 443 -C -e http
sudo tcpflow -i eth0 port 80 -C -e http
И мыопределили, что всякий раз, когда приложение перезапускается из фона (следовательно, происходит переход по этому URL-адресу), весь запрос шифруется , но получаемым URL-адресом является http-URL , а порт - 443.
Мы добавили различные журналы в наш http-перехватчик и в телефон Android, но мы не можем определить основную причину.Может ли кто-нибудь указать другое направление для поиска проблемы.
Редактировать 1:
- Протестировано на 5 разных устройствах с разными ОС Android и производителем устройства
- Android-приложение представляет собой релиз build