GCM/FCM: не принимает события, обратный вызов цели трансляции: result = CANCELED

Обсуждается эта ошибка, но, похоже, все они получают ответы о "остановленном состоянии" (приложений).

Я вижу что-то другое.

У меня есть две тестовые образцы облаков, одна из которых является официальным образцом GCM, а другая - проектом FCM, который следил за учебником, и оба они затронуты.

Оба установлены на Samsung S6 с 6.0.1, устройство подключено (без Doze) и подключено к WiFi.

Время от времени отправку push-сообщений в образец GCM или в приложение FCM начинает сбой с ними в logcat:

07-17 14: 37: 38.851 W/GCM-DMM (29459): вызов функции трансляции: результат = ОТМЕНА forIntent {act = com.google.android.c2dm.intent.RECEIVE flg = 0x10000000 pkg = gcm.play.android.samples.com.gcmquickstart(есть дополнительные функции)}

07-17 14: 38: 25.231 W/GCM-DMM (29459): вызов вызова трансляции: результат = ОТМЕНА forIntent {act = com.google.android.c2dm.intent.RECEIVE flg = 0x10000000 pkg = firebasetest.example.kman.firebasetest(есть дополнительные функции)}

Запуск пользовательского интерфейса приложения заставит push-сообщения снова пройти (к этому приложению), но старые (которые вызвали ошибки) не будут повторно отправлены.

Теперь - я не заставил остановить приложение. Один из них я использовал, может быть, 15 минут назад. Устройство не заснуло (его экран был включен, и он был подключен в течение всего времени).

Итак, объяснение "принудительное прекращение" здесь не применяется, режим Doze здесь не применяется.

Кроме того, говоря о "принудительной остановке", я провел несколько тестов, после чего умышленно закрывая приложение (GCM или FCM) из "списка последних приложений", проверяя, что процесс был убит (через logcat) а затем либо (GCM, либо FCM) push-сообщения прошли бы очень хорошо.

Таким образом, это должно быть что-то другое (не "принудительное прекращение" или режим Doze), и это что-то еще вызывает тотальный обмен сообщениями, чтобы стать ненадежным, что побеждает цель.

Любые идеи о том, как отслеживать это, чтобы предотвратить/избежать этого внезапного обрыва доставки push-сообщений?

манифест образца GCM:

https://github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/AndroidManifest.xml

Тест-тест FCM:

`` `XML

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

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

`` `

Ответ 1

Мое заключение:

Это вызвано Android Studio.

Когда вы закончите работу над проектом в течение дня и выходите из AS, он спрашивает, должно ли приложение (отлаживаться) прекратить работу.

Независимо от того, что вы выбрали здесь, AS всегда будет прекращать приложение и помещать его в состояние "остановлено", а не только GCM, аварийные сигналы также прекращают стрельбу.

Я вижу, что это происходит все время, и я привык перезапускать приложение самостоятельно и что-то делать там, поэтому он не говорит "остановился" и не удивляет меня ( "что случилось" ) на следующий день.

Думал, что я написал ошибку, но не могу найти ее сейчас. Если кто-то заинтересован, не стесняйтесь...