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

时间:2016-07-17 11:57:06

标签: android google-cloud-messaging

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

我看到了不同的东西。

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

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

有时,将推送消息发送到GCM示例或FCM应用程序会在logcat中开始失败:

  

07-17 14:37:38.851 W / GCM-DMM(29459):广播意图回调:结果=取消内容{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 = CANCELED 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>

```

1 个答案:

答案 0 :(得分:1)

我的结论是:

这是由Android Studio引起的。

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

无论您在此处选择什么,AS都会终止该应用并将其置于&#34;停止&#34;状态 - 不仅仅是GCM,警报也会停止发射。

我发现这种情况一直都在发生,并养成了自己重新启动应用程序并在那里做某事的习惯,因此它并没有说“停止”#34;第二天并没有让我感到惊讶(&#34;发生的事情&#34;)。

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