GCM / FCM:无法接收事件,广播意图回调:result = CANCELLED。

11
有人讨论过这个错误,但似乎他们都得到了关于应用程序“停止状态”的答案。
我看到了一些不同的情况。
我有两个云推送示例,一个是官方的GCM示例,另一个是遵循教程的FCM项目,它们都受到了影响。
两者都安装在带有6.0.1的三星S6上,设备已连接(没有Doze)并连接到WiFi。
不时地,向GCM示例或FCM应用程序发送推送消息会导致日志中出现以下内容:
启动任一应用程序的用户界面都会使推送消息再次通过(发送到该应用程序),但旧的消息(产生错误的消息)将不会重新传递。
现在-我没有强制停止任何一个应用程序。其中一个我可能只使用了15分钟之前。设备没有进入睡眠状态(屏幕亮着,整个时间都插着电源)。
因此,“强制停止”解释在这里不适用,Doze模式在这里也不适用。
此外,说到“强制停止”,我进行了几项测试,运行然后故意关闭GCM或FCM应用程序中的任何一个从“最近使用的应用程序列表”中,验证进程是否被杀死(通过logcat),然后GCM或FCM推送消息都能够正常传递。
因此,必须是其他原因(而不是“强制停止”或Doze模式),这些原因导致推送消息变得不可靠,这就达不到目的了。
有什么想法可以追踪这个问题,以防止/避免推送消息传递突然中断吗?
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>

```


2
这个问题有进展了吗?我在我的手机上也遇到了同样的情况。 - Mike T
这些问题有任何进展吗? - raditya gumay
1个回答

2
我的结论是:
这是由Android Studio引起的。
当你完成一天的项目工作并退出AS时,它会询问是否终止正在调试的应用程序。
无论你选择什么,AS都会终止应用程序并将其置于“停止”状态 - 不仅是GCM,警报也停止触发。
我经常看到这种情况发生,并养成了自己重新启动应用程序并在其中执行某些操作的习惯,以便它不会显示为“已停止”,并且不会在第二天出现意外情况(“发生了什么”)。
我认为我已经为此提交了一个错误报告,但现在找不到了。如果有人感兴趣,请随意...

我认为这更有意义的是当ADB连接到设备时 - 我在模拟器上遇到了同样的问题,杀掉了Android Studio并在启动后杀掉了我的应用程序,通知开始正常工作(而当Android Studio打开时,在杀掉应用程序后不会收到任何通知)。 - kassim
1
这并没有解决我的问题。 对于我来说,有些设备仍然存在这个问题。 - JoshuaTree
它解决了我的问题。 - puzzled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接