Я создал ядро ASP. NET с интерфейсом angular. Приложение angular имеет настройку пакета узла @angular/pwa
, так что это прогрессивное веб-приложение, которое может быть установлено на Android / windows и ведет себя как нативное приложение.
У меня настроен внешний вход (Microsoft, Google, Facebook, Twitter) с Microsoft.AspNetCore.Identity. Из моего приложения angular я открываю всплывающее окно на страницу внешнего входа:
this.authWindow = window.open(`${this.baseUrl}/web/v2/Account/${this.action}/${medium}/${this.platform}`, null, 'width=600,height=400');
URL-адрес для всплывающих маршрутов к конечной точке ASP. NET Core, где у меня есть * 1007. * call, который возвращает страницу входа для указанного c внешнего провайдера (Microsoft, Google, Facebook, Twitter).
В Chrome на Windows, вы нажимаете кнопку, которая вызывает окно. open (), чтобы открыть окно с внешней страницей входа. При успешном входе в систему вы будете перенаправлены на страницу обратного вызова, которая является страницей бритвы, которая отправляет сообщение в главное окно, содержащее приложение angular. Сообщение обрабатывается, а всплывающее окно закрывается.
Проблема
Когда я использую веб-сайт на Chrome для Android, я могу установить PWA как приложение, которое добавляет значок на моей android домашней странице. Когда я открываю PWA и нажимаю кнопку, чтобы открыть всплывающее окно, всплывающее окно открывается во всплывающем окне для моего PWA, поэтому никаких проблем нет.
Когда я открываю Chrome на android и посещаю веб-сайт, в то время как PWA установлен, вызов window.open()
не открывает всплывающее окно для браузера Chrome, но вместо этого пытается открыть всплывающее окно для Progressive Web App. Поскольку это так, всплывающее окно внутри PWA не может уведомить веб-сайт в Chrome об успешном входе в систему (дух ...).
Но когда PWA не установлен, window.open()
работает в порядке и открывает всплывающее окно в Chrome.
Таким образом, нижняя строка - , PWA установлен на android. И я хочу иметь возможность звонить по номеру window.open()
со своего веб-сайта внутри Chrome и открыть его в Chrome браузере вместо PWA.
Things I ' мы пробовали
1) Изменить ngsw-config. json
{
...,
"navigationUrls": [
"/**",
"!/**/*.*",
"!/**/*__*",
"!/**/*__*/**",
"!/web/v2/Account/connect/**/**",
"!/web/v2/Account/add/**/**"
]
}
2) Открыть окно с помощью target='_system'
this.authWindow = window.open(`${this.baseUrl}/web/v2/Account/${this.action}/${medium}/${this.platform}`, '_system', 'width=600,height=400');
3) Открыть окно с target='_blank'
this.authWindow = window.open(`${this.baseUrl}/web/v2/Account/${this.action}/${medium}/${this.platform}`, '_blank', 'width=600,height=400');
4) Откройте окно с target='_blank'
и без baseUrl, просто абсолютный путь.
this.authWindow = window.open(`/web/v2/Account/${this.action}/${medium}/${this.platform}`, '_blank', 'width=600,height=400');
Но все трюки, кажется, ведут себя одинаково и до сих пор откройте окно в PWA.