diff --git a/src/main/java/im/rosetta/service/dispatch/push/dispatchers/FCM.java b/src/main/java/im/rosetta/service/dispatch/push/dispatchers/FCM.java index 6cccac8..974b5c2 100644 --- a/src/main/java/im/rosetta/service/dispatch/push/dispatchers/FCM.java +++ b/src/main/java/im/rosetta/service/dispatch/push/dispatchers/FCM.java @@ -19,6 +19,8 @@ import im.rosetta.service.dispatch.runtime.PushType; public class FCM extends Pusher { + private boolean isInitialized = false; + public FCM() { initializeFirebase(); } @@ -39,8 +41,10 @@ public class FCM extends Pusher { .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options); + this.isInitialized = true; } catch (IOException e) { - throw new RuntimeException("Failed to initialize Firebase", e); + this.isInitialized = false; + e.printStackTrace(); } } } @@ -94,6 +98,12 @@ public class FCM extends Pusher { @Override public void sendPush(String token, HashMap data) { + if(!this.isInitialized){ + /** + * Firebase не инициализирован, пропускаем отправку уведомлений + */ + return; + } try{ Message message = this.buildMessage(token, data); FirebaseMessaging.getInstance().send(message); diff --git a/src/main/java/im/rosetta/service/dispatch/push/dispatchers/VoIPApns.java b/src/main/java/im/rosetta/service/dispatch/push/dispatchers/VoIPApns.java index 6e98869..b1aef90 100644 --- a/src/main/java/im/rosetta/service/dispatch/push/dispatchers/VoIPApns.java +++ b/src/main/java/im/rosetta/service/dispatch/push/dispatchers/VoIPApns.java @@ -17,6 +17,7 @@ public class VoIPApns extends Pusher { private ApnsClient client; private String topic; + private boolean isInitialized = false; public VoIPApns(){ this.initializeApns(); @@ -38,13 +39,21 @@ public class VoIPApns extends Pusher { .setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST) .setClientCredentials(new File(p12Path), p12Password) .build(); + this.isInitialized = true; } catch (Exception e) { - throw new RuntimeException("Failed to init VoIP APNs client", e); + this.isInitialized = false; + e.printStackTrace(); } } @Override public void sendPush(String token, HashMap data) { + if(!this.isInitialized) { + /** + * Нет файла для инициализации APNs клиента, пропускаем отправку VoIP уведомлений + */ + return; + } if(data.get("type") != PushType.CALL) { /** * Для VoIP APNs отправляем уведомления только о входящих звонках