Я использую swPush
в моем angular проекте. При этом событие this.swPush.requestSubscription()
вызывается нажатием кнопки.
Например:
это getdeviceToken
вызовет
getDeviceToken(): Promise<any> {
console.log('getting device token')
return new Promise(async (resolve, reject) => {
if (this.swPush.isEnabled) {
console.log('before subscription')
let sub = await this.swPush.requestSubscription({
serverPublicKey: this.VAPID_PUBLIC_KEY
})
console.log('temp --------', sub)
if(sub) {
this.device_token = sub;
if(sub) {
console.log('if sub')
resolve(this.device_token);
}else{
console.log('else sub')
reject({ message: "Error getting device id"});
}
} else{
reject({ message: "Error getting device id"});
}
} else{
console.log('sw is not enabled');
reject({ message: "Error getting device id"});
}
}
После полной перезагрузки, когда я нажимаю кнопку в первый раз, она застревает на
console.log('before subscription')
и ничего не возвращает. Это делает мое приложение непригодным для использования, так как функция не возвращает ничего, даже не является ошибкой. Поэтому я не могу двигаться вперед.
Но когда я делаю простую перезагрузку и снова нажимаю кнопку, это работает, и this.swPush.requestSubscription()
возвращает мне обещание, поэтому мое приложение движется вперед. Кто-нибудь знает, почему он не работает в первый раз? Или любые предложения по улучшению этого.