Contexto
Estou trabalhando em uma aplicação mobile feita em Ionic, que precisou ser portada também para web. A versão antiga dessa aplicação (web) era feita em Angular 1 e, com o objetivo de melhorar a experiência e reduzir o custo da manutenção, resolvemos utilizar a base de código do nosso app também para web.
O problema
Para notificar no mobile usamos o @ionic-native/onesignal e na web o OneSignalWebSDK. Tudo funcionava bem com um simples ionic serve. Entretanto, após fazer um build com ionic cordova build browser, o OneSignal que era injetado no objeto window não era aquele provido pelo OneSignalWebSDK, e sim o do cordova. Cheguei nessa conclusão após analisar vários console.logs e ver diferenças marcantes entre o output dos logs de desenvolvimento e de produção.
A solução
Para solucionar precisei importar o OneSignalWebSDK programaticamente. Isto é, usando JavaScript ao invés de uma tag <script> no arquivo index.html. Este chunk de código é executado após o cordova carregar todos os seus plugins, ou seja, após a Promise platform.ready() ser resolvida.
O código
providers/notification/notification.ts

Problem Solved
Resolvi omitir a implementação do OneSignal do cordova pois na documentação contém o necessário para sair usando. Espero que isto resolva o seu problema assim como resolveu o meu. Obrigado!



Top comments (0)