проблема при отправке уведомления FCM в IOS - PullRequest
0 голосов
/ 10 января 2019

У меня есть метод в c #, который отправляет уведомление на android и ios, android получает уведомление, но разработчик IOS говорит, что уведомление не получено, хотя успешный ответ на вывод равен 1, как показано ниже:

multicast_id \ ": 8095934738241910690, \" Успех \ ": 1, \" отказа \ ": 0, \" canonical_ids \ ": 0, \" Результаты \ ": [{\" message_id \ ": \" 0 : 1547134100665140% 046d9ccbf9fd7ecd \ "}]}"

В чем проблема, что устройство ios не получает сообщение?

Мой код

var IsSuccess = false;
try
{
    string ToDevice = "XXX";
    string serverApiKey = "XXX";
    string senderId = "XXX"; 
    using (var db = new NurseryCareEntities())
    {
        WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
        tRequest.Method = "post";
        tRequest.ContentType = "application/json";
        var data = new
        {
            to = ToDevice,
            data = new
            {
                body = "My Message",
                title = "Title",
                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}", serverApiKey));
        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 response = tReader.ReadToEnd();
                        if (!response.Contains("Unauthorized"))
                        {
                            var ObjArr = response.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                            if (ObjArr.Length > 0)
                            {
                                var Success = ObjArr[1].Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                                if (Success.Length > 0)
                                {
                                    if (Success[1] == "0")  // Error occur
                                    {
                                        db.Database.ExecuteSqlCommand(string.Format("EXEC Add_IOS_error '{0}'", "Message Not sent"));
                                        db.SaveChanges();
                                    }
                                    else  // Notification Sent Successfully
                                    {
                                        IsSuccess = true;
                                        db.Database.ExecuteSqlCommand(string.Format("EXEC Add_IOS_error '{0}'", "Sent"));
                                        db.SaveChanges();
                                    }
                                }
                            }

                        }
                        return IsSuccess;
                    }
                }
            }
        }
    }
}
catch (Exception exception)
{
    using (var db = new NurseryCareEntities())
    {
        db.Database.ExecuteSqlCommand(string.Format("EXEC Add_IOS_error '{0}'", exception.Message.ToString()));
        db.SaveChanges();
    }
    return IsSuccess;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...