3

我试图从C#中的服务器发送推送通知,我使用正确的注册令牌和API密钥,但仍获得以下响应。C中的Firebase云消息传递#

{"multicast_id":7864311304033595507,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

我下面这个网址来实施该解决方案Send push to Android by C# using FCM (Firebase Cloud Messaging)

目前,我尝试发送通知到一个单一的设备,但也想发送给多个设备一次,我用to : "/topics/all"在给定的网址,但它不起作用。如果我必须一次向多台设备发送通知,该怎么办?

这里是我的代码

try 
     { 

      string applicationID = "SERVER_KEY "; 

      string senderId = "SENDER_ID"; 

      string deviceId = "ba92be2da78e7285"; 

      WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 
      tRequest.Method = "post"; 
      tRequest.ContentType = "application/json"; 
      var data = new 
      { 
       //to = deviceId, 
       to = deviceId, 
       notification = new 
       { 
        body = "Bring your existing apps and games to the Windows Store with the Desktop Bridge", 
        title = "Bridge", 
        sound = "Enabled" 

       } 
      }; 
      var serializer = new JavaScriptSerializer(); 
      var json = serializer.Serialize(data); 
      Byte[] byteArray = Encoding.UTF8.GetBytes(json); 
      tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID)); 
      tRequest.Headers.Add(string.Format("Sender: id={0}", senderId)); 
      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(); 
          string str = sResponseFromServer; 
         } 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      string str = ex.Message; 
     } 
+0

很难确定。它给你的回应似乎意味着服务器密钥是好的,但注册令牌不好:https://firebase.google.com/docs/cloud-messaging/server#auth也许应用程序已卸载并重新安装android设备和新的令牌是否生成?我只是猜测。 –

+0

另外,您可能需要登录到Firebase控制台(如果您拥有设置此项目的用户的凭据),并从那里直接向该单个应用程序注册令牌发送消息。您还可以向所有设备或主题发送消息。 https://console.firebase.google.com/ –

+0

@albertbraun,thanx为您的快速回复,注册令牌您的设备ID,对吧? – yadavr

回答

1

我的问题得到了解决。我使用的设备ID与注册令牌ID不同。所以我必须使用FirebaseInstanceId.getInstance().getToken()方法返回的注册令牌ID。其他代码与我发布的问题相同。

+0

如何设置here..i像这样使用'VAR数据=新 { 到= DEVICEID, 通知=新 { 身体=“欢迎光临”, 标题=通知图标“哎“, icon =”https://placeimg.com/250/250/nature“, sound =”default“ } };'但我只收到默认通知 –

相关问题