Облачное сообщение Firebase SDK не может определить, какой токен является успешным - PullRequest
0 голосов
/ 12 июля 2019

Основываясь на Firebase Admin SDK и унаследованном протоколе сервера Http, я использую два решения для отправки сообщения

Но два решения не могут определить, является ли это успехом или неудачей.Как это определить?

первое решение использовало SDK

    public static async Task Send()
    {
        FirebaseApp.Create(new AppOptions()
        {
            Credential = GoogleCredential.FromFile(
                Path.Combine(Environment.CurrentDirectory,"service-account-file.json"))
        });

        var message = new MulticastMessage()
        {
            Notification = new Notification()
            {
                Body = "TestBody",
                Title = "TestTitle"
            },

            Tokens = new List<string>(){ TokenA, TokenB}
        };  

        var respon =  await FirebaseMessaging.DefaultInstance.SendMulticastAsync(message);

        Console.WriteLine(respon);
    }

ответ показывает:

{
    "FailureCount": 1,
    "SuccessCount": 1,
    "Responses": [
        {
            "Exception": null,
            "IsSuccess": true
            "MessageId": "projects/pushtest-8f822/messages/0:1562899661229611%5d0d01f35d0d01f3

        },
        {
            "Exception": "Google.Apis.Resuest.RequestError......",
            "IsSuccess": false
            "MessageId": null
        }
    ]
}

Второе решение использовать устаревший протокол сервера Http

   public static async Task SendHttp()
   {
       var data = new 
       {
           registration_ids = new[] { TokenB, TokenA },
           notification = new
           {
               body = "body",
               title = "title"
           }
       };

       string jsonMessage = JsonConvert.SerializeObject(data);
       var request = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/fcm/send");
       request.Headers.TryAddWithoutValidation("Authorization", $"key={ServerKey}");
       request.Headers.TryAddWithoutValidation("Sender", $"id={SenderId}");
       request.Headers.TryAddWithoutValidation("Content-Type", "application/json");
       request.Content = new StringContent(jsonMessage, Encoding.UTF8, "application/json");

       using (var client = new HttpClient())
       {
           var result = await client.SendAsync(request);

           var responseBody = result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
       }
   }

responseBody показывает

{
    "multicast_id": 8518242433263494716,
    "success": 1,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
        {
            "error": "NotRegistered"
        },
        {
            "message_id": "0:1562899978685796%5d0d01f35d0d01f3"
        }
    ]
}

Я хотел бы получить результат / ответ, который может идентифицировать TokenA и TokenB, которые являются успешными и неудачными

Обновление: я найду способопределить, какой токен отправлен успешно или неудачно, но о нем не пишут никаких документов.Если токены (SDK) или registration_ids, нажмите TokenA, затем TokenB.результат покажет тот же порядок с результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...