Come impedire a Firebase di registrare gli aggiornamenti di stato all'avvio dell'app


98

Ogni volta che avvio l'app FireBase, registra lo stato di varie funzionalità di Firebase. In questo momento questo è ciò che viene registrato:

Configuring the default app.

<FIRAnalytics/INFO> Firebase Analytics v.3200000 started

<FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...)

<FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist

<FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO

<FIRAnalytics/INFO> Firebase Analytics enabled

Ho esaminato i pod e non ho trovato alcuna dichiarazione di stampa, quindi in quale altro modo potrei impedire che vengano registrati gli straordinari durante l'esecuzione dell'app?


3
Sono d'accordo con te. Sto anche cercando un modo per disabilitare i messaggi.
Gui Moura

1
Hai trovato un metodo?
Gilian

Ci dovrebbe essere sicuramente un motivo per disattivare i messaggi. Non importa quanti di essi siano registrati. Non mi dispiace ricevere avvisi ed errori, ma i messaggi iniziali sono fonte di distrazione, senza dubbio.
Jakub Truhlář

Risposte:


117

È possibile disabilitare la registrazione del debug con il flag -FIRDebugDisabled.

Puoi aggiungerlo al tuo schema :

  1. Seleziona la barra degli strumenti dello schema
  2. Modifica schema
  3. Seleziona Esegui
  4. Fare clic su Argomenti e aggiungere -FIRDebugDisabled

1
Ah, ho fatto il check-in con gli ingegneri: quei messaggi verranno registrati a prescindere. Con la bandiera, però, è tutto ciò che dovresti vedere.
Ian Barber

20
A è -noFIRAnalyticsDebugEnabledstato rinominato -FIRDebugDisabled. Gli altri passaggi sono gli stessi.
Marat Saytakov

3
Non proprio buono (questo probabilmente non verrà aggiunto ai repository di codice ecc. E quindi causerà un codice diverso a seconda del metodo di compilazione (pensa a eseguire / archivio)). Per impostazione predefinita, le build di rilascio dovrebbero avere i log OFF ... IMHO 😎
Jonny

1
questo ha il terribile effetto collaterale di attivare la modalità di debug per Firebase Analytics
Hogdotmac

62

Aggiungi FirebaseConfiguration.shared.setLoggerLevel(.min)prima FirebaseApp.configure()per ottenere la quantità minima di registrazione.

func setupFirebase() {
  FirebaseConfiguration.shared.setLoggerLevel(.min)
  FirebaseApp.configure()
}

Questo fa il lavoro!
Kyle Goslan

3
Il codice è stato aggiornato a FIRConfiguration.sharedInstance (). SetLoggerLevel (.min)
Chrishan

16

Per impostazione predefinita, Firebase registrerà informazioni, errori e avvisi.
Quindi puoi impostare il livello di logger di cui hai bisogno.
Se si imposta per .Error si otterrà il log min solo quando si verifica un errore.

setLoggerLevel prima di FirebaseApp.configure () come mostrato di seguito

In Swift 2.3 e Firebase 4

 FirebaseConfiguration.sharedInstance().setLoggerLevel(.Error)
 FirebaseApp.configure()

In Swift 3 e Firebase 4

 FirebaseConfiguration.shared.setLoggerLevel(.min)
 FirebaseApp.configure()

Come posso scrivere questo codice nell'obiettivo c puoi dirmi grazie
Yogesh Patel

16

Nel mio caso, per nascondere la parte in più del registro della console da Firebase, ho fatto quanto segue:

  1. Vai a Prodotto -> Schema -> Modifica schema.
  2. Nella scheda Argomenti nella sezione Variabili d'ambiente aggiungere OS_ACTIVITY_MODE = disabilita

inserisci qui la descrizione dell'immagine

  • Nel caso in cui ne avessi bisogno, deseleziona semplicemente la casella.
  • La disabilitazione di OS_ACTIVITY_MODE a volte disabiliterà i log anche per tutte le eccezioni

Modifica 1 : come ha detto @ jesus-adolfo-rodriguez, questo è correlato a Xcode. Quindi, se non vuoi OSLog sulla console Xcode, metti la variabile d'ambiente OS_ACTIVITY_MODE su "disabilita" nel tuo schema.


Modifica 2:

FirebaseConfiguration.shared.setLoggerLevel(FirebaseLoggerLevel.min)
FirebaseApp.configure()

Maggiori dettagli nell'implementazione di FIRConfiguration qui


Modifica 3: 2019

Secondo questo problema: https://github.com/firebase/firebase-ios-sdk/issues/2774#issuecomment-482780714

L' aggiunta dell'argomento -FIRDebugDisabled e la pulizia del progetto hanno funzionato.

Il sistema di registrazione in Firebase

Il sistema di registrazione ha due modalità: modalità predefinita e modalità debug. Nella modalità predefinita, al dispositivo verranno inviati solo i registri con Avviso, Avviso ed Errore a livello di registro. In modalità debug, tutti i registri verranno inviati al dispositivo. I livelli di log utilizzati da Firebase sono coerenti con i livelli di log ASL.

Abilita la modalità di debug passando l'argomento -FIRDebugEnabled all'applicazione. È possibile aggiungere questo argomento nello schema Xcode dell'applicazione. Quando la modalità debug è abilitata tramite -FIRDebugEnabled, anche le ulteriori esecuzioni dell'applicazione saranno in modalità debug. Per tornare alla modalità predefinita, è necessario disabilitare esplicitamente la modalità di debug con l'argomento dell'applicazione -FIRDebugDisabled .

È anche possibile modificare il livello di registrazione predefinito nel codice chiamando setLoggerLevel: sull'interfaccia FIRConfiguration.


3
questo non ha nulla a che fare con Firebase
Jesus Rodriguez il

e nasconderà le tue analisi se vuoi che vengano mostrate -FIRAnalyticsDebugEnabled
DogCoffee

Questo ha disabilitato tutti i log per me. Come hai detto nell'ultimo punto.
R. Mohan

Mi ha aiutato a ridurre i messaggi da Firebase che sono stati registrati nonostante setLoggerLevel(.min)e -FIRDebugDisabled. Bella risposta!
kelin

4
Smetti di dire alle persone di disabilitare tutte le registrazioni.
Claus Jørgensen

7
FIRConfiguration.sharedInstance().setLoggerLevel(.min)
FIRApp.configure()

In Swift 4


2
FirebaseConfiguration.shared.setLoggerLevel(.min)in FB 5.14
Adam Waite

6

Swift 4 Firebase 4.10

Imposta il livello di logger nel tuo AppDelegate.swift

FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)

Ecco il codice completo:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseConfiguration().setLoggerLevel(FirebaseLoggerLevel.min)
    FirebaseApp.configure()
    return true
}

4

Per impostazione predefinita, Firebase Analytics registra solo 4 righe INFO in produzione + errori / avvisi. Questo dovrebbe essere un output minimo se le cose funzionano correttamente. L'aggiunta di -noFIRAnalyticsDebugEnabled disabiliterà solo i log di livello DEBUG e ERROR / WARN vengono sempre registrati. Se vedi avvisi o errori, probabilmente devi fare qualcosa per risolvere la causa. Alcune cose probabilmente non funzioneranno correttamente se vengono registrati avvisi / errori. L'app che è configurata correttamente non dovrebbe registrare errori / avvisi.

I messaggi contrassegnati con FIRInstanceID / * vengono registrati da Firebase Notification e gli errori / avvisi vengono sempre registrati.


3

Come ha detto djabi, non è possibile disabilitare quei log se sono INFO, AVVISO o ERRORE.

Voglio aggiungere alla risposta di Nitin Gohel poiché non posso commentare: il flag FirebaseAppDelegateProxyEnabled non serve per disabilitare i log. Se lo disattivi, perderai il monitoraggio automatico della campagna e dovrai aggiungere i metodi da FIRAnalytics (AppDelegate) per gestire tu stesso l'URL e l'attività degli utenti.


3

Per aggiungere alla risposta di Alex, da https://firebase.google.com/docs/cloud-messaging/ios/client

FirebaseAppDelegateProxyEnabled serve per modificare i metodi del delegato dell'app

L'API FCM esegue lo swizzling del metodo in due aree chiave: mappatura del token APN al token di registrazione FCM e acquisizione dei dati di analisi durante la gestione del callback dei messaggi a valle. Gli sviluppatori che preferiscono non utilizzare lo swizzling possono disabilitarlo aggiungendo il flag FirebaseAppDelegateProxyEnabled nel file Info.plist dell'app e impostandolo su NO (valore booleano). Le aree pertinenti delle guide forniscono esempi di codice, sia con che senza swizzling dei metodi abilitato.


1

Penso che sia in corso una grande e molto importante confusione.

Usandolo -FIRDebugDisabledsi disabiliterà la modalità di debug che quindi le misurazioni saranno influenzate durante il test e lo sviluppo .

Per ridurre i registri:

FirebaseConfiguration.shared.setLoggerLevel(.min)
FirebaseApp.configure()

Tuttavia c'è un bug nelle versioni 6.18 e 6.20.

Come soluzione alternativa puoi usare -noFIRAnalyticsDebugEnabledche è una cosa diversa, questa non disabilita la tua modalità di debug.


primo bug creato l'8 agosto 2019 e ancora nessuna correzione :( si spera che lo
risolvano
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.