2016-07-08 6 views
3

私はAndroidとiOSアプリケーションでFCMを使用しています。 Firebaseコンソールから何らかの問題なしに両方のプラットフォームに通知を送信できるので、クライアントサイドのコードは正しく動作しています。私のC#コードでは、アンドロイドデバイスに正常に通知を送信できますが、Firebase通知コンソールから直接送られない限り、通知はiPhoneに表示されません。私は何が与えるのか分からない。Firebaseクラウドメッセージングと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

ファイヤーベースから直接来たメッセージは異なって見えます。 gcm.message_id:0:1467938951987907%a13567c6XXXX67c6 %@ [aps:{alert = { body = "これはメッセージです"; title = "これはタイトルです"; }; }、gcm.message_id:0:0:14679XXXX87907%がa13567c6a1XXXXc6] メッセージは、メッセージIDを受け取っ1467939XXXXX5%a13567c6a13567c6 %@ [google.c.a.c_l:why2、google.c.a.e:1、APS = why1 { アラート; }、gcm.ne:1、google.cac_id:50607XXXXXX957125、google.caudt:0、gcm.message_id:0:14679XXXX18215%a13567c6a1XXX7c6、google.cats:146XXXXX32] –

+0

こんにちは、私はdeviceId ? –

答えて

4

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)に設定しなければならず、すべてが順調です。提供された回答は非常に有用でした。ありがとうアーサー –

関連する問題