Vitor Freitas
Posted on December 13, 2019
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.log
s 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!
Posted on December 13, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.