4

IBerechtigungen für Firebase Analytics und Absturz

verwendet
//Analytics 
compile 'com.google.firebase:firebase-core:9.2.1' 
// Crash 
compile 'com.google.firebase:firebase-crash:9.2.1' 

und erhalten die Jungs in meinem generierte Manifest:

<!-- Required permission for App measurement to run. --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<!-- Optional permission for App measurement to run. --> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

Dann haben wir folgenden Block

<permission 
    android:name="my.package.name.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" /> 

Meine Fragen:

Wenn ich nur Firebase Analytics und Absturz verwenden und benötigen keine Messaging-funktionale, ist es Ok den zweiten Block zu entfernen, wie folgt:

<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" tools:node="remove" /> 

Was bedeutet es, „Optionale Erlaubnis für App Messung läuft "im ersten Block? Ist es sicher, das auch zu entfernen?

Antwort

2

Firebase Analytics verwendet FirebaseInstanceId. Dies kann durch Ausführen der Abhängigkeitsaufgabe im Android Studio-Tool-Fenster für Gradle angezeigt werden. Dieser Teil des Ausgangs zeigt die Abhängigkeit von FirebaseInstanceId:

+--- com.google.firebase:firebase-core:9.2.1 
| \--- com.google.firebase:firebase-analytics:9.2.1 
|   +--- com.google.android.gms:play-services-basement:9.2.1 
|   | \--- com.android.support:support-v4:24.1.0 
|   |   \--- LOCAL: internal_impl-24.1.0.jar 
|   +--- com.google.firebase:firebase-common:9.2.1 
|   | +--- com.google.android.gms:play-services-basement:9.2.1 
|   | | \--- com.android.support:support-v4:24.1.0 
|   | |   \--- LOCAL: internal_impl-24.1.0.jar 
|   | \--- com.google.android.gms:play-services-tasks:9.2.1 
|   |   \--- com.google.android.gms:play-services-basement:9.2.1 
|   |    \--- com.android.support:support-v4:24.1.0 
|   |     \--- LOCAL: internal_impl-24.1.0.jar 
|   \--- com.google.firebase:firebase-analytics-impl:9.2.1 
|    +--- com.google.android.gms:play-services-basement:9.2.1 
|    | \--- com.android.support:support-v4:24.1.0 
|    |   \--- LOCAL: internal_impl-24.1.0.jar 
|    +--- com.google.firebase:firebase-iid:9.2.1 <== FirebaseInstanceId 
|    | +--- com.google.android.gms:play-services-basement:9.2.1 
|    | | \--- com.android.support:support-v4:24.1.0 
|    | |   \--- LOCAL: internal_impl-24.1.0.jar 
|    | \--- com.google.firebase:firebase-common:9.2.1 
|    |   +--- com.google.android.gms:play-services-basement:9.2.1 
|    |   | \--- com.android.support:support-v4:24.1.0 
|    |   |   \--- LOCAL: internal_impl-24.1.0.jar 
|    |   \--- com.google.android.gms:play-services-tasks:9.2.1 
|    |    \--- com.google.android.gms:play-services-basement:9.2.1 
|    |     \--- com.android.support:support-v4:24.1.0 
|    |      \--- LOCAL: internal_impl-24.1.0.jar 
|    \--- com.google.firebase:firebase-common:9.2.1 
|     +--- com.google.android.gms:play-services-basement:9.2.1 
|     | \--- com.android.support:support-v4:24.1.0 
|     |   \--- LOCAL: internal_impl-24.1.0.jar 
|     \--- com.google.android.gms:play-services-tasks:9.2.1 
|      \--- com.google.android.gms:play-services-basement:9.2.1 
|        \--- com.android.support:support-v4:24.1.0 
|         \--- LOCAL: internal_impl-24.1.0.jar 

Die C2D_MESSAGE Erlaubnis stammt aus dem Manifest im Zusammenhang mit der firebase-iid Bibliothek. Ich nehme an, dass ohne FirebaseAnalytics keine eindeutige ID für das Gerät erhalten werden kann und Daten nicht gemeldet werden können.

Bezüglich der WAKE_LOCK Erlaubnis, sieh diese related answer.

Ich bezweifle, dass es sicher ist, irgendwelche der Berechtigungen zu entfernen. Sie können dies herausfinden, indem Sie ohne sie auskommen und sehen, ob Analytics Ereignisse meldet.

2

Ja, Sie können beide entfernen und sie sind nicht erforderlich. Auch in Google sample keine dieser beiden Berechtigungen gewährt.

Nach documentation:

Firebase Analytics hilft Ihnen zu verstehen, wie Menschen Ihre iOS oder Android App verwenden. Das SDK erfasst automatisch eine Reihe von Ereignissen und Benutzereigenschaften und ermöglicht Ihnen auch, Ihre eigenen benutzerdefinierten Ereignisse zu definieren , um die Dinge zu messen, die für Ihr Unternehmen einzigartig sind. Sobald die Daten erfasst sind, ist es in einem Dashboard über die Firebase Konsole verfügbar. Dieses Dashboard bietet detaillierte Informationen über Ihre Daten - aus zusammenfassenden Daten wie aktive Nutzer und Demografien, bis hin zu weiteren detaillierten Daten wie die Identifizierung Ihrer am häufigsten gekauften Artikel.

Sehen Sie auch this Video vielleicht geben Sie eine bessere Idee über die Messung.

1

Beachten Sie, dass "optionale Erlaubnis" bezieht sich nur auf die WAKE_LOCK und nicht c2dm.Erlaubnis.RECEIVE.

Die "Optionale Berechtigung" ergibt sich aus dem Manifest des Zwischenordners für firebase-analytics. (\ build \ intermediates \ explodierte-aar \ com.google.firebase \ firebase-analytics).

enter image description here

Sie beachten Sie, dass für die Version 10.0.1 (die Version i verwendet), WAKE_LOCK Erlaubnis nicht mehr optional ist. Wakelock zeigt nicht mehr "Optionale Berechtigung zum Ausführen von App-Messungen".

enter image description here

die WAKE_LOCK Erlaubnis Entfernung in a lot of crashes führen.

Wie für die anderen Berechtigungen. Laut Doug Stevenson bei https://groups.google.com/d/msg/firebase-talk/CXgecSxgsRE/84PsoyTKGgAJ C2D_MESSAGE und c2dm.permission.RECEIVE ist wichtig.

Es stellt sich heraus, dass diese anderen Berechtigungen, die scheinbar nur für das Messaging relevant sind, indirekt von Analytics und anderen Firebase-Komponenten verwendet werden. Der Grund ist, dass sie sichere Token generieren müssen, die regelmäßig rotiert werden müssen. Dies wird von der Instanz-ID-Bibliothek gehandhabt, die Sie hier lesen können: https://developers.google.com/instance-id/

... sie sind wichtig, um sicherzustellen, dass Firebase-Komponenten korrekt funktionieren). Mir wurde gesagt, dass Analytics, Crash Reporting und Remote Config alle diese Tokens heute verwenden

Verwandte Themen