如何使用 C# 向所有设备发送带有图像的 FCM 通知?

Posted

技术标签:

【中文标题】如何使用 C# 向所有设备发送带有图像的 FCM 通知?【英文标题】:How to send FCM notification with an image to all devices using C#? 【发布时间】:2017-02-22 10:00:23 【问题描述】:

有没有办法使用 C# 向所有设备广播 FCM 通知 -加上图像

我想包含一张图片并通过 Firebase 通知服务发送到所有设备,而不是发送到一个特定的设备 ID。

我使用此代码将数据发送到单个用户设备,但没有图像:

public string SendNotificationInstaTips(string firebaseID, 
        string notTitle
        string notText, 
        string notContent)
    

        try
        
            string SERVER_API_KEY = "AIza..QXq5OQCaM";
            string SENDER_ID = "162..09";                
            string REGISTERATION_ID = firebaseID;

            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
            tRequest.Method = "post";
            tRequest.ContentType = "application/json";

            var data = new
            
                to = REGISTERATION_ID,

                data = new
                
                    title = notTitle,
                    text = notText
                    content = notContent
                
            ;
            var serializer = new javascriptSerializer();
            var json = serializer.Serialize(data);
            Byte[] byteArray = Encoding.UTF8.GetBytes(json);
            tRequest.Headers.Add(string.Format("Authorization: key=0", SERVER_API_KEY));
            tRequest.Headers.Add(string.Format("Sender: id=0", SENDER_ID));
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    
                        using (StreamReader tReader = new StreamReader(dataStreamResponse))
                        
                            String sResponseFromServer = tReader.ReadToEnd();
                            return sResponseFromServer;
                        
                    
                
            
        
        catch (Exception ex)
        
            return ex.Message;
        
    

【问题讨论】:

是否找到任何解决方案向所有用户发送数据? 是否找到任何解决方案向所有用户发送数据? 【参考方案1】:

我一直在使用 php 来解决这个问题,但在 C# 中应该是类似的。 在您的代码中使用“registration ids”而不是“to”

var data = new
        
            to = REGISTERATION_ID, //Change this line

            data = new
            
                title = notTitle,
                text = notText
                content = notContent
            
        ;
var data = new
        
            registration_ids = "AIza..QXq5OQCaM","An2i..QXq5OQCaM", .....,

            data = new
            
                title = notTitle,
                text = notText
                content = notContent
            
        ;

希望对你有帮助

【讨论】:

我没有所有的 ID 这并不能真正回答问题。主要关心的是如何将图像发送到所有设备。 如果您想将消息发送到多个设备,这就是方法。但是对于图像,你不能。您可以改为发送图片的网址(请参阅 AL 的回答)【参考方案2】:

这不是推送通知的常见用例。对于 FCM,强烈建议不要通过图像发送,主要是因为负载大小限制 - notification 为 2KB,data 为 4KB。

我建议使用Firebase Storage 存储图像,然后在需要时将其下载到设备中,只需在推送通知中发送下载 URL 作为解决方法。

有关如何发送到多个设备的问题,请参阅我的answer here。我建议您使用Topic Messaging。

【讨论】:

以上是关于如何使用 C# 向所有设备发送带有图像的 FCM 通知?的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 向 ios 设备发送带有 fcm 令牌的远程通知

在 C#.net 中向多个设备(但不是所有设备)发送 FCM 通知

如何使用 google api 向多个设备发送 FCM 推送通知?

如何使用 node-fcm 向多个设备发送通知

通过向 FCM 单个设备发送通知来反应本机 Firebase iOS 生产无法正常工作

如何使用 FCM 向 iOS 发送通知?