为什么系统托盘中不显示通知?

时间:2018-04-26 16:56:06

标签: android firebase firebase-cloud-messaging

我可以在我的应用运行时向我的Android手机和模拟器发送推送通知。 (我可以告诉他们,因为我的应用程序崩溃了。)

那么为什么系统托盘中不会显示通知?几个小时后,当我看着我的手机时,他们做了几次。我不知道为什么会这样。

我是从Firebase云消息传递屏幕发送的,它说消息是“已完成”。

这是一些代码......

[Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseIIDService : FirebaseInstanceIdService
    {
        const string TAG = "MyFirebaseIIDService";

        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;

            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
        }
    }

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class CCFirebaseMessagingService : FirebaseMessagingService
    {
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "Hi Mum!");
        }
    }

这两个事件都可以在调试器中打破。

在清单......

<application android:label="My app">
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="${applicationId}" />
            </intent-filter>
        </receiver>
    </application>

1 个答案:

答案 0 :(得分:0)

这是Firebase的设计。

通知会显示应用是否在后台,但如果可见,则会显示。实际收到基础推送消息,并显示通知由Firebase库处理。

这与旧的Google云消息传递不同,后者始终向应用提供前景或后台。

(社区维基回答基于长线程中的评论。请编辑以添加更多详细信息。)