NativeScript firebase: экземпляр Firebase не сохраняется в фоновой службе при закрытии приложения

#firebase-realtime-database #nativescript

#firebase-база данных в реальном времени #nativescript

Вопрос:

Я пытаюсь нажать на входящий вызов, используя следующую фоновую службу в NativeScript и выполняя поиск по входящему номеру в базе данных Firebase.

Код firebase.query from nativescript-plugin-firebase работает нормально, если пользовательский интерфейс приложения виден или свернут в Android, но когда приложение закрыто (однако служба работает в фоновом режиме), он выдает firebase.query: TypeError: Cannot read property 'child' of null ошибку. Есть идея.

app/broadcastreceivers/NotificationEventReceiver.js:

 var application = require("application");
var firebase = require("nativescript-plugin-firebase");
var incomingCallDetected = false;
var TelephonyManager = application.android.context.getSystemService(android.content.Context.TELEPHONY_SERVICE);

android.support.v4.content.WakefulBroadcastReceiver.extend("com.tns.broadcastreceivers.NotificationEventReceiver", {
  onReceive: function (context, intent) {
    if (intent.getAction() === 'android.intent.action.PHONE_STATE') {
       incomingCallDetected = true;
    }
  }
});

var callStateListener = android.telephony.PhoneStateListener.extend({
  onCallStateChanged: function (state, phoneNumber) {
    if (incomingCallDetected amp;amp; state === 1) { // incoming call ringing
      firebase.query(
        function(result) {
          console.log(JSON.stringify(result)); 
        },
        "/calls",
        {
          singleEvent: true,
          orderBy: {
            type: firebase.QueryOrderByType.CHILD,
            value: 'PhoneNumber'
          },
          range: {
            type: firebase.QueryRangeType.EQUAL_TO,
            value: phoneNumber.replace(/s /g, '').substr(-10)
          }
        }
      );
      incomingCallDetected = false;
    }
  }
});
TelephonyManager.listen(new callStateListener(), android.telephony.PhoneStateListener.LISTEN_CALL_STATE);
  

Обновление: Эта строка в nativescript-plugin-firebase вызывает проблему, поскольку firebaseInstance не сохраняется в службе после закрытия приложения.

Ответ №1:

Я думаю, это потому, что firebase никогда не запускается в фоновой службе, я предполагаю, что вы делаете это только в коде приложения, поэтому оно работает, когда оно находится на переднем плане.