45 votes

Comment aborder android peluches plainte exportées Firebase service de Messagerie implémentations?

À la suite de la Google developer des instructions sur la mise en œuvre de Firebase dans mon application, j'ai remarqué que android peluches se plaint.

L'idée est que nous devons mettre en place deux services qui héritent de Firebase services:

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { ... }

public class MyFirebaseMessagingService extends FirebaseMessagingService { ... }

et ensuite vous inscrire à ces services dans le manifeste. Mais, ce n'est pas tout à fait parfaite. En particulier, ces deux recommandée AndroidManifest.xml les entrées de service ne contiennent pas toutes les autorisations spéciales:

<service android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

<service android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

et donc le linter dit:

Exporté des services (les services qui soit définir exporté=true ou contenir un intent-filter et ne spécifiez pas exporté=false) doit définir une permission, une entité doit avoir afin de lancer le service, ou de se lier à elle. Sans tout cela, l'application peut utiliser ce service.

Dois-je simplement ajouter cet attribut pour chaque numéro de service et être fait avec elle

tools:ignore="ExportedService"

ou est-il une meilleure approche dans cette situation? Je veux dire, est-il sûr d'exposer ces Firebase provenant des services de ce genre?

57voto

Bob Snyder Points 24996

Vous demandez: ...est-il sûr d'exposer ces Firebase provenant des services de ce genre? Il est si vous faites confiance aux commentaires dans les fichiers manifest pour ces services.

Dans Android Studio, ouvrez votre application AndroidManifest.xml fichier. Au bas de la fenêtre, sélectionnez l'onglet Fusionné Manifeste. Faites défiler jusqu'à trouver l'entrée d' FirebaseMessagingService. Double-cliquez sur la ligne qui contient le nom du service. Le fichier de manifeste pour le service devrait s'ouvrir et vous verrez ceci:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.firebase.messaging">
    <uses-sdk android:minSdkVersion="14"/>

    <application>

        <!-- FirebaseMessagingService performs security checks at runtime,
             no need for explicit permissions despite exported="true" -->
        <service android:name="com.google.firebase.messaging.FirebaseMessagingService" android:exported="true">
            <intent-filter android:priority="-500">
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

    </application>
</manifest>

Remarque le commentaire: FirebaseMessagingService effectue des contrôles de sécurité lors de l'exécution, pas besoin d'autorisations explicites malgré exporté="true"

Vous pouvez faire de même pour FirebaseInstanceIdService et de voir le même commentaire.

Si vous faites confiance aux commentaires (je ne), vous pouvez ignorer la fibre de mises en garde ou de désactiver les contrôles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X