0

Я пытаюсь использовать FCM для отправки уведомлений на устройство Android, но кажется, что я чего-то не хватает. Эти шаги, которые я затемC# FCM для Android Push Notification

  1. Создать новый проект в https://console.firebase.google.com
  2. Из меню Настройки -> вкладка Cloud Messaging, я получил ключ сервера и Id Sender
  3. я использовал этот код

    var regId = "device id"; 
        string SERVER_API_KEY = "Firebase Server key"; 
        var SENDER_ID = "Sender ID"; 
        var value = "Test Notification"; 
        WebRequest tRequest; 
        tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 
        tRequest.Method = "post"; 
        tRequest.ContentType = " application/x-www-form-urlencoded;charset=UTF-8"; 
        tRequest.Headers.Add(string.Format("Authorization: key={0}", SERVER_API_KEY)); 
    
        tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID)); 
    
        string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" + value + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + regId + ""; 
        Console.WriteLine(postData); 
        byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
        tRequest.ContentLength = byteArray.Length; 
    
        Stream dataStream = tRequest.GetRequestStream(); 
        dataStream.Write(byteArray, 0, byteArray.Length); 
        dataStream.Close(); 
    
        WebResponse tResponse = tRequest.GetResponse(); 
    
        dataStream = tResponse.GetResponseStream(); 
    
        StreamReader tReader = new StreamReader(dataStream); 
    
        string sResponseFromServer = tReader.ReadToEnd(); 
    
    
        tReader.Close(); 
        dataStream.Close(); 
        tResponse.Close(); 
    

Я всегда получаю ошибку несоответствия отправителя. Я пропустил какие-то шаги? или мне нужно что-то делать в мобильном приложении?

+0

Привет. Ошибка ['MismatchSenderId'] (https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes) может указывать на то, что идентификатор отправителя, который вы используете для отправки уведомления, не связан с указанным регистрационным маркером. Вы уверены, что используете правильный идентификатор отправителя (см. Консоль Firebase> Параметры проекта> вкладка Cloud Messaging)? –

+0

Да, в облачной почтовой вкладке написано ясно. Идентификатор отправителя – ahmed

+0

Несколько моментов в отношении вашей полезной нагрузки: 1. 'delay_while_idle' уже устарел, поэтому вы можете просто удалить это. 2. Параметр 'registration_id' неверен, он должен быть' registration_ids'. НО, если вы собираетесь отправлять только одному пользователю, как указано в документах, используйте вместо этого 'to'. Можете ли вы сейчас попробовать его отредактировать и посмотреть, можете ли вы отправить сообщение? –

ответ

0

Я нашел ошибку. В качестве стороннего разработчика я работал только на части C#. Необходимо сделать еще один шаг со стороны мобильного приложения. Мобильное приложение должно разрешать получать сообщения из списка идентификаторов отправителя, поэтому тот, который я использую в своем коде на C#, должен быть разрешен с мобильного приложения. Как только я это сделал, он работал

+0

Привет, Ахмед. Можете ли вы предоставить более подробную информацию о том, как вы разрешаете получать сообщения из списка идентификаторов отправителя *? Вы добавили его в свой google-services.json? Ура! –