Ionic 5 / Capacitor: как узнать, запущено ли приложение в браузере или скомпилировано как собственное приложение?

Я просто хочу знать, работает ли мое приложение Ionic 5 в браузере или в веб-просмотре скомпилированного приложения.

Платформа не работает: https://ionicframework.com/docs/angular/platform
Она просто рассказывает об устройстве. Но когда я запускаю его в Chrome на устройстве Android, он возвращает те же платформы, что и при его компиляции.

Анализ URL, чтобы проверить, работает ли URL веб-просмотра, но не при использовании оперативной перезагрузки конденсатора. Потому что это тот же URL-адрес, что и локально в браузере. И, кстати, анализ URL кажется уродливым решением.

Неужели так сложно получить эту простую и важную информацию, или я просто что-то упускаю?

Изменить:
Вывод платформы
Chrome в Ubuntu с ионной службой: [рабочий стол]
Chrome в Android: [android, mobile, mobileweb]
Android с постоянной загрузкой конденсатора: [android, phablet, mobile, mobileweb]
Android скомпилирован: [android, phablet, cordova, конденсаторный, мобильный, гибридный]


person user1383029    schedule 01.12.2020    source источник
comment
Привет! Не могли бы вы добавить, каков результат вызова метода platforms() (ionicframework.com/docs/ angular / platform # platform-string-) в обоих сценариях? Этот метод возвращает список платформ, поэтому было бы полезно посмотреть, есть ли разница (или есть ли ошибка в Ionic).   -  person sebaferreras    schedule 01.12.2020
comment
Добавил в исходный пост. Я думаю, что при перезарядке должен выводиться конденсатор, верно? Тогда у меня появилось свойство дифференцировать.   -  person user1383029    schedule 01.12.2020
comment
Не совсем, я думаю, что конденсатор будет возвращен только при исходной работе на мобильных устройствах (livereload немного сложнее, поскольку он используется только во время разработки). Но все же вы можете использовать что-то вроде этого const isBrowser = platform.is('mobileweb') || platform.is('desktop'), и оно должно работать, верно? Таким образом вы узнаете, работает ли приложение изначально или в браузере.   -  person sebaferreras    schedule 01.12.2020
comment
Но конденсатор с живой перезагрузкой тоже дает мне MobileWeb. И я подумал, что причина быстрой перезагрузки конденсатора в том, что я могу протестировать родное приложение с живой перезагрузкой. Если это не так, зачем мне его использовать? Для тестирования браузера у меня есть ionic.   -  person user1383029    schedule 01.12.2020
comment
Это хороший вопрос. В документации по конденсаторам упоминается, что ionic capacitor run будет делать следующее: Выполнять ионную сборку (или запускать сервер разработки из ionic serve с параметром --livereload). Таким образом, флаг живой перезагрузки просто запустит сервер разработки, но на устройстве. Я не использую его очень часто tbh, но я думаю, что он полезен, например, при работе с iOS и вставками верхней / нижней безопасной области. Не могли бы вы попробовать вызвать собственный плагин при использовании livereload, чтобы посмотреть, что произойдет?   -  person sebaferreras    schedule 01.12.2020
comment
Когда я вызываю подключаемый модуль браузера конденсатора (Capacitorjs.com/docs/apis/browser), он открывается в веб-браузере системы нет, браузер в приложении. Но тогда у меня действительно возникает вопрос: зачем мне нужна прямая подзарядка конденсатора? В чем отличие от ионной подачи   -  person user1383029    schedule 02.12.2020


Ответы (1)


Установите флажок Capacitor.platform. Если возвращает веб-сайт, значит, он работает как веб-сайт, если возвращает ios или android, то он является родным.

Или также можете проверить Capacitor.isNative.

https://capacitorjs.com/docs/basics/utilities#getplatform

person jcesarmobile    schedule 02.12.2020
comment
Это не в режиме livereload. Это обсуждение (см. Выше). Я упомянул об этом в своем основном вопросе. - person user1383029; 02.12.2020
comment
Это отличается от ионной платформы, вы не упоминаете Capacitor.platform нигде в своем вопросе. - person jcesarmobile; 02.12.2020
comment
Ах, спасибо. Не прочитал правильно. Это работает! Возможно, вы можете добавить к своему ответу ссылку на документы: capacitorjs.com/docs/basics/utilities# getplatform - person user1383029; 02.12.2020