Can';t在后台Xamarin.iOS应用程序中接收Firebase数据消息

Can';t在后台Xamarin.iOS应用程序中接收Firebase数据消息,ios,xamarin.ios,firebase-cloud-messaging,Ios,Xamarin.ios,Firebase Cloud Messaging,我已在我的Xamarin iOS应用程序中成功设置firebase云消息。当我通过firebase控制台发送消息时,一切正常。 在我的后端,我添加了Firebase admin SDK for dotnet,并尝试通过以下方式向我的iOS应用程序发送“数据”消息: 首先,使用普通消息创建主题: var iOSMsg = new Message() { Topic = iOSDemoUsersTopic, Ap

我已在我的Xamarin iOS应用程序中成功设置firebase云消息。当我通过firebase控制台发送消息时,一切正常。 在我的后端,我添加了Firebase admin SDK for dotnet,并尝试通过以下方式向我的iOS应用程序发送“数据”消息:

首先,使用普通消息创建主题:

var iOSMsg = new Message()
            {
                Topic = iOSDemoUsersTopic,
                Apns = new ApnsConfig
                {
                    Headers = new Dictionary<string, string>
                    {
                        { "priority", "high" }
                    },
                    Aps = new Aps
                    {
                        ContentAvailable = true,
                        MutableContent = true
                    }
                },
                Data = notificationData.ToDictionary(kv => kv.Key, kv => kv.Value.ToString())
            };
        var response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
var iOSMsg=新消息()
{
Topic=iOSDemoUsersTopic,
Apns=新的ApnsConfig
{
Headers=新字典
{
{“优先级”、“高”}
},
Aps=新Aps
{
ContentAvailable=true,
可变内容=真
}
},
Data=notificationData.ToDictionary(kv=>kv.Key,kv=>kv.Value.ToString())
};
var response=wait FirebaseMessaging.DefaultInstance.SendAsync(消息);
这种方法不起作用。因为我只在我的应用程序打开时收到消息,当它打开时我会关闭它,所以不会再收到通知

然后我决定尝试旧的多播消息,希望它能起作用。我做了如下工作:

 var msg = new MulticastMessage
            {
                Apns = new ApnsConfig
                {
                    Headers = new Dictionary<string, string>
                    {
                        { "priority", "high" }
                    },
                    Aps = new Aps
                    {
                        ContentAvailable = true,
                        MutableContent = true,
                    }
                },
                Data = notificationData.ToDictionary(kv => kv.Key, kv => kv.Value.ToString()),
                Tokens = iOSTokens.ToList()
            };

            var response = await FirebaseMessaging.DefaultInstance.SendMulticastAsync(msg);
var msg=新的多播消息
{
Apns=新的ApnsConfig
{
Headers=新字典
{
{“优先级”、“高”}
},
Aps=新Aps
{
ContentAvailable=true,
可变内容=真,
}
},
Data=notificationData.ToDictionary(kv=>kv.Key,kv=>kv.Value.ToString()),
Tokens=iOSTokens.ToList()
};
var response=wait FirebaseMessaging.DefaultInstance.sendMulticastSync(msg);
但是,事情仍然是这样。
在android上,我可以在后台接收消息,当应用程序被终止时,我可以接收数据消息。我尝试了一百万种方法,有人能帮我吗?

最后,我找到了解决办法。 我的通知在哪里发送得很好,但当通过iOS获得时,找不到
aps
alert
对象,因此操作系统无法显示通知

要使此属性可用,也应在消息中设置“通知”属性

  var msg = new Message
            {
                Apns = new ApnsConfig
                {
                    Aps = new Aps
                    {
                        ContentAvailable = true,
                        MutableContent = true,
                    }
                },
                Notification = new Notification
                {
                    Body = body,
                    Title = title
                },
                Data = notificationData.ToDictionary(kv => kv.Key, kv => kv.Value.ToString()),
                Topic = iOSDemoUsersTopic
            };

因此,在添加通知属性后,一切正常。

确保覆盖了方法
didReceiveMemotentification
。调用了
completionHandler(UIBackgroundFetchResult.NewData)在方法中。谢谢,但我已经这么做了。这不会改变任何事情