首页 文章

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

提问于
浏览
10

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

我看到了不同的东西 .

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

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

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

07-17 14:37:38.851 W / GCM-DMM(29459):广播意图回调:result = CANCELED forIntent 07-17 14:38:25.231 W / GCM-DMM(29459):广播意图回调:result = CANCELED forIntent

启动任一应用程序的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

    我的结论是:

    这是由Android Studio引起的 .

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

    无论你在这里选择什么,AS总会终止应用并将其置于“停止”状态 - 不仅仅是GCM,警报也会停止发射 .

    我发现这种情况一直都在发生,并且习惯于自己重新启动应用程序并在那里做一些事情,所以它不会说“停止”并且第二天不会让我感到惊讶(“发生的事情”) .

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

相关问题