【问题标题】:Not receive fcm notification when app is closed应用关闭时收不到 fcm 通知
【发布时间】:2019-06-19 08:02:14
【问题描述】:

您好,我正在尝试在 xamarin 表单应用程序中实现 FCM。 我安装了 Plugin.FirebasePushNotification 插件

我实现了刷新令牌类

[Service]
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
public class MyFirebaseIIDService : FirebaseInstanceIdService
{
    const string TAG = "MyFirebaseIIDService";
    public override void OnTokenRefresh()
    {
        var refreshedToken = FirebaseInstanceId.Instance.Token;
        Log.Debug(TAG, "Refreshed token: " + refreshedToken);
        SendRegistrationToServer(refreshedToken);
    }
    void SendRegistrationToServer(string token)
    {
        // Add custom implementation, as needed.
    }
}

这个类用于接收通知但在应用关闭时不会收到通知

  [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
        public class MyFirebaseMessagingService : FirebaseMessagingService
        {
            const string TAG = "MyFirebaseMsgService";

            // [START receive_message]
            public override void OnMessageReceived(RemoteMessage message)
            {
        }
    }

我使用了这个有效载荷

{ "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...", "通知" : { "body" : "绝配!", "title" : "葡萄牙 vs. 丹麦" } }

【问题讨论】:

  • 如果您的应用处于调试模式,您需要重新打开一次并关闭。不如尝试发送通知。
  • @CGPA6.4 应用打开时收到通知,如果未收到关闭
  • 您的应用是在调试模式下开发的吗?如果是,比打开应用程序后,再次关闭它。比发送通知。
  • @CGPA6.4 不起作用
  • 您可以尝试在有效负载中发送data 代替notification 并检查。

标签: android xamarin.forms


【解决方案1】:

来自Android官方文档,FirebaseMessagingsubscribeToTopic的方法。

public Task subscribeToTopic (String topic)

在后台订阅主题。 订阅操作将被持久化,并将重试直到成功。 这使用 Firebase 实例 ID 令牌来识别应用实例并定期将数据发送到 Firebase 后端。

这里是Android FCM Remote Notifications的官方示例。经过测试这个项目,如果没有订阅通知,应用停止时不会收到通知。

App 加载时可以试一试。代码如下:

FirebaseMessaging.Instance.SubscribeToTopic("news");

【讨论】:

  • 你好@Junior 我收到了通过刷新令牌而不是主题的通知,所以刷新令牌的任何解决方案
  • 您的意思是没有收到OnTokenRefresh?也许这是另一个问题。如果回答有帮助,您可以将其标记为已接受以关闭问题并重新打开另一个关于Refresh token的问题。^.^
  • 如果想要OnTokenRefresh 被调用首先需要MyFirebaseIIDService 被调用。这是一个很好的讨论。(stackoverflow.com/questions/46770907/…)
  • 你好@Junior 我在发布和调试模式以及后台和前台收到通知,但是如果我调试应用程序然后关闭调试并发送通知,单击应用程序图标并打开应用程序然后关闭应用程序后不会收到通知发送收到通知通知结论:调试应用关闭调试,关闭应用,然后发送通知,打开应用后未收到通知,关闭应用,发送通知,收到通知。
  • 当点击closing debug时,会杀掉app的PID。然后不会收到通知,app的服务也没有运行。建议测试通知使用正常的界面动作点击关闭应用程序,这样您就可以收到通知,如果您已经订阅了。
【解决方案2】:

就我而言。我添加了OneTimeWorkResult.retry,并将setBackoffCriteria 添加到30 秒以确保FirebaseMessaging.getInstance().isAutoInitEnabled()

如果结果是false,我用FirebaseMessaging.getInstance(). setAutoInitEnabled(true)再次运行它。

对不起,如果我的英语这么差,因为我使用谷歌翻译。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多