web-dev-qa-db-fra.com

Impossible de résoudre le service d'intention cible, Erreur lors de la remise du message: ServiceIntent introuvable

J'essaye de faire fonctionner gcm.

Lorsque notre serveur envoie une notification Push, ces deux erreurs sont consignées dans le journal de mon application:

E/GcmReceiver (8049): échec de la résolution du service d'intention cible, ignorant application du nom de classe E/GcmReceiver (8049): erreur lors de la livraison du fichier message: ServiceIntent introuvable.

Dans le dossier de mon application, j'ai récupéré le fichier google-services.json.

J'ai ajouté le 2 services nécessaires et le destinataire à mon manifeste:

  <receiver
        Android:name="com.google.Android.gms.gcm.GcmReceiver"
        Android:exported="true"
        Android:permission="com.google.Android.c2dm.permission.SEND" >
        <intent-filter>
            <action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
            <category Android:name="com.myapppackage.application" />
        </intent-filter>
    </receiver>


    <service
        Android:name="com.myapppackage.application.gcm.newgcm.RegisterGCMTokenService"
        Android:exported="false">
    </service>


    <service
        Android:name="com.myapppackage.application.gcm.newgcm.MyInstanceIDListenerService"
        Android:exported="false">
        <intent-filter>
            <action Android:name="com.google.Android.gms.iid.InstanceID"/>
        </intent-filter>
    </service>

J'ai également ajouté ces deux classes Java. Le jeton gcm fournissant et téléchargeant sur notre serveur est correct. _ {J'ai aussi l'événement Push ', mais j'ai eu ces 2 erreurs ci-dessus et aucun message.

J'ai ajouté mon numéro de projet} de la console Google Api au strings.xml en tant que 'google_app_id'

Les clés de l'API devraient être correctes car j'obtiens l'événement Push, mais le message n'est pas fourni.

Mes diplômés les dépendances au niveau de l'application ont:

compile 'com.google.Android.gms:play-services:8.+'

Mes diplômés les dépendances au niveau du projet ont:

classpath 'com.google.gms:google-services:1.3.1'

Alors qu'est-ce que c'est??} S'il vous plaît, aidez-moi si vous le pouvez.

15
Adam Varhegyi

Vous devriez avoir ces 3 services dans votre manifeste. Il vous manque celui avec l'action-.google.Android.c2dm.intent.RECEIVE

    <service
        Android:name="com.myapppackage.application.gcm.GcmIntentService"
        Android:exported="false">
        <intent-filter>
            <action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

    <service
        Android:name="com.myapppackage.application.gcm.GcmIDListenerService"
        Android:exported="false">
        <intent-filter>
            <action Android:name="com.google.Android.gms.iid.InstanceID" />
        </intent-filter>
    </service>

    <service
        Android:name="com.myapppackage.application.gcm.RegistrationIntentService"
        Android:exported="false"/>
5
Malek Hijazi

Hey, vous devez ajouter la classe MyGcmListenerService pour recevoir une notification:

public class MyGcmListenerService extends GcmListenerService {

@Override
public void onMessageReceived(String from, Bundle data) {
    String message = data.getString("message");
}

vous devez ajouter cette classe en tant que service dans AndroidMaifest.xml 

  <service Android:name="com.mypackage.application.services.MyGcmListenerService"
        Android:exported="false" >
    <intent-filter>
        <action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
    </intent-filter>
    </service>
0
mohit