2016-07-08 3 views
3

Я использую FCM в своем приложении для Android и iOS. Клиентский код работает правильно, потому что из консоли Firebase я могу отправлять уведомления на обе платформы без каких-либо проблем. С моим кодом C# я могу успешно отправлять уведомления на устройства Android, но уведомления никогда не появляются на iPhone, если они напрямую не отправляются с консоли уведомлений Firebase. Я не знаю, что дает.Firebase Cloud Messaging и код сервера C#

C# код на стороне сервера

try 
{ 
    var applicationID = "application_id"; 
    var senderId = "sender_id"; 
    string deviceId = "device_id_of_reciever"; 
    WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); 
    tRequest.Method = "post"; 
    tRequest.ContentType = "application/json"; 
    var data = new 
    { 
     to = deviceId, 
     notification = new 
     { 
      body = "This is the message", 
      title = "This is the title", 
      icon = "myicon" 
     } 
    }; 

    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(); 
       Response.Write(sResponseFromServer); 
      } 
     } 
    } 
} 
catch (Exception ex) 
{ 
    Response.Write(ex.Message); 
} 

Уведомление не работает на iPhone с моей стороны сервера кодом, но я получаю хороший ответ от Firebase.

{ 
    "multicast_id": 479608 XXXXXX529964, 
    "success": 1, 
    "failure": 0, 
    "canonical_ids": 0, 
    "results": [{ 
     "message_id": "0:1467935842135743%a13567c6a13567c6" 
    }] 
} 

Любая помощь или предложения были бы действительно оценены.

+0

Сообщения выглядят по-разному, когда они поступают непосредственно из firebase. gcm.message_id: 0: 1467938951987907% a13567c6XXXX67c6] % @ [aps: {alert = { body = "Это сообщение"; title = "Это название"; }; }, gcm.message_id: 0: 14679XXXX87907% a13567c6a1XXXXc6] сообщение получил ID сообщения: 0: 1467939XXXXX5% a13567c6a13567c6 % @ [google.c.a.c_l: why2, google.c.a.e: 1, АПС: { оповещение = why1; }, gcm.ne: 1, google.cac_id: 50607XXXXXX957125, google.caudt: 0, gcm.message_id: 0: 14679XXXX18215% a13567c6a1XXX7c6, google.cats: 146XXXXX32] –

+0

привет, вы можете рассказать мне, как вы отправляете deviceId ? –

ответ

4

Попробуйте установить поле приоритета High в запросе FCM.

Например:

var data = new 
{ 
    to = deviceId, 
    notification = new 
    { 
     body = "This is the message", 
     title = "This is the title", 
     icon = "myicon" 
    }, 
    priority = "high" 
}; 

Примечание хотя, что использование высокого приоритета в развитии это хорошо, но в производстве оно должно использоваться только тогда, когда пользователь должен принять меры, как ответ на сообщение чата.

+0

Я правильно ответил на ответ. В моем случае я должен был установить приоритет 10 (приоритет = 10), а затем все хорошо. Предоставленный ответ был чрезвычайно полезен. Спасибо, Артур –

Смежные вопросы