【问题标题】:GCM / FCM: not receiving events, broadcast intent callback: result=CANCELLEDGCM/FCM:未接收事件,广播意图回调:result=CANCELLED
【发布时间】:2023-03-18 02:56:01
【问题描述】:

有关于这个错误的讨论,但似乎他们最终都得到了关于“停止状态”(应用程序)的答案。

我看到了一些不同的东西。

我有两个云推送示例,一个是官方 GCM 示例,另一个是遵循教程的 FCM 项目,它们都受到了影响。

两者都安装在带有 6.0.1 的三星 S6 上,设备已插入(无 Doze)并连接到 WiFi。

有时,向 GCM 示例或 FCM 应用发送推送消息会开始失败,并在 logcat 中显示这些:

07-17 14:37:38.851 W/GCM-DMM (29459):广播意图回调:result=CANCELLED 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):广播意图回调:result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=firebasetest.example .kman.firebasetest(有附加功能)}

启动任一应用的 UI 都会使推送消息再次通过(到该应用),但旧的(产生错误的)不会重新传递。

现在 - 我没有强制停止任何一个应用程序。其中一个是我在 15 分钟前才使用的。设备没有进入睡眠状态(它的屏幕一直亮着并且一直插着电源)。

所以“强制停止”的解释在这里不适用,打盹模式在这里不适用。

此外,说到“强制停止”,我已经做了几个测试,运行然后故意从“最近的应用程序列表”中关闭任何一个(GCM 或 FCM)应用程序,验证进程是否被杀死(通过 logcat)然后任何一个(GCM 或 FCM)推送消息都会顺利通过。

所以它必须是别的东西(不是“强制停止”或打盹模式),而这个别的东西导致推送消息变得不可靠,这违背了目的。

关于如何追踪这一点,以防止/避免推送消息传递的突然中断有什么想法吗?

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>

```

【问题讨论】:

  • 这方面有进展吗?我在手机上看到了同样的东西。
  • 这个问题有进展吗?

标签: android google-cloud-messaging


【解决方案1】:

我的结论是:

这是由 Android Studio 引起的。

当您完成一天的项目并退出 AS 时,它会询问是否应该终止(正在调试的)应用程序。

无论您在此处选择什么,AS 都将始终终止应用并将其置于“停止”状态——不仅仅是 GCM,警报也会停止触发。

我经常看到这种情况发生,并养成了自己重新启动应用程序并在那里做某事的习惯,这样第二天它就不会说“停止”并且不会让我感到惊讶(“发生了什么”)。

以为我已经为此提交了一个错误,但现在找不到。如果有人有兴趣,请随意...

【讨论】:

  • 更有意义的是,当 ADB 连接到我认为的设备时 - 我在模拟器上遇到了同样的问题,杀死了 Android Studio,并且在我启动然后杀死我的应用程序后通知开始出现(而当 Android Studio 打开时,杀死应用程序后不会收到任何通知)
  • 这并没有解决我的问题。有些设备对我来说就是这个问题。
  • 它解决了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多