当前位置: 首页 > 知识库问答 >
问题:

GCM/FCM:不接收事件,广播意图回调:结果=CANCELLED

齐琦
2023-03-14

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

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

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

两者都安装在带有6.0.1的三星S6上,该设备插在电源上(不打瞌睡)并连接到无线网络。

向GCM样本或FCM应用程序发送推送消息时,有时会出现以下情况:

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.231W/GCM-DMM(29459):广播意图回调:结果=取消forIntent{act=com.google.android.c2dm.intent.接收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>

"'

共有1个答案

章琛
2023-03-14

我的结论是:

这是由Android Studio造成的。

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

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

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

我以为我已经为这个提交了一个bug,但现在找不到了。如果有人感兴趣,请随时。。。

 类似资料:
  • 我有一个很奇怪的问题。 我正在发送广播并设置一些额外内容,但接收者没有收到: 发送: 并收到: 由于某些原因,downloadID为空。有什么提示吗? 谢谢

  • 通知广播接收机: 谁能帮帮我吗?我不知道我做错了什么

  • 我有麻烦当我启动应用程序和注册设备在Gcm 知道怎么修好它吗? 其余的工作良好,我收到的通知和正确的。 错误

  • 问题内容: 我正在尝试开发一个可检测用户何时拍照的应用程序。我设置了广播接收器类,并通过以下方式将其注册到清单文件中: 无论我做什么,该程序都不会收到广播。这是我的接收器类: 如果删除清单和活动中的mimeType行,则使用以下命令发送自己的广播 然后我成功接收到广播,可以看到日志和吐司窗口​​。我是否采用正确的方法?有什么需要补充的吗? 问题答案: 我解决了这个问题,但是使用了另一种方法。我没有

  • 问题内容: 有人可以解释和之间的确切区别吗? 在什么情况下我们必须使用每个Receiver类? 问题答案: 和之间只有一个区别。 当您收到内部广播方法时, 假设, BroadcastReceiver : 它 不保证 该 CPU将保持清醒 ,如果你启动一些长时间运行的进程。CPU可能会立即回到睡眠状态。 WakefulBroadcastReceiver : 这是 保证 该 CPU将保持清醒 ,直到你