Подтвердить что ты не робот

Не удалось разрешить службу целевого намерения. Ошибка при доставке сообщения: ServiceIntent не найден.

Я пытаюсь сделать gcm работу.

Когда наш сервер отправляет push-уведомление, я получил эти две ошибки в журнале приложений:

E/GcmReceiver (8049): не удалось выполнить целевую службу цели, пропуская Eclipseer (8049): ошибка при доставке message: ServiceIntent не найден.

В моей папке приложения я получил файл google-services.json.

Я добавил 2 необходимые службы и получатель к моему манифесту:

  <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>

У меня также добавлены эти два в качестве классов java. Предоставление и загрузка маркера gcm на наш сервер прекрасна. Я также получил push-событие, но как-то я получил эти 2 ошибки выше, и никаких сообщений.

Я добавил номер проекта из консоли google api в strings.xml как 'google_app_id'

Ключи API должны быть в порядке, потому что Я получаю событие push, но каким-то образом сообщение не предоставляется.

Мои зависимостей уровня gradle на уровне приложения:

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

Мои gradle зависимости уровня проекта:

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

Итак, , что за черт?! Пожалуйста, помогите мне, если сможете.

4b9b3361

Ответ 1

У вас должны быть эти 3 службы в вашем манифесте. У вас отсутствует тот, у кого есть действие com.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"/>

Ответ 2

Привет, вам нужно добавить класс MyGcmListenerService для получения уведомления:

public class MyGcmListenerService extends GcmListenerService {

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

вам нужно добавить этот класс в качестве службы в 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>

Ответ 3

просто проверьте Gradle на наличие необходимых обновлений, а затем синхронизируйте приложение и снова запустите  это сработало (возможно, что-то не так в Firebase)

Ответ 4

Добавление зависимости от обмена сообщениями в Firebase сработало для меня

implementation 'com.google.firebase:firebase-analytics:17.0.1'
implementation 'com.google.firebase:firebase-messaging:19.0.1'

Обратите внимание, что обмен сообщениями в Firebase зависит от анализа Firebase.