XAMARIN - Firebase Cloud Messaging - Android Устройство не отображает уведомление, но получает его - PullRequest
0 голосов
/ 23 января 2020

Привет! Я пытаюсь отправить уведомления на устройство Android.

Я использую этот плагин CrossGeeks / PushNotificationPlugin . Я создал проект firebase и извлек параметры для использования в webapi, которые я сделал с . NET Core MVC 3.1 . Когда я отправляю уведомление, точка останова на событии корректно срабатывает

CrossPushNotification.Current.OnNotificationReceived + = (s, p) =>

Однако на моем устройстве уведомление не отображается. Если, с другой стороны, я использую консоль firebase для отправки уведомления, оно отображается правильно как с неактивным приложением, так и с приложением переднего плана.

По этой причине, поскольку мое клиентское приложение правильно получает уведомления от firebase, Я думаю, что проблема на стороне сервера. Это мой код:

[HttpPost, Route("Prova")]
public async Task<IActionResult> SendNotication()
{
    try
    {
        var notification = new GoogleNotification();
        notification.Data = new GoogleNotification.DataPayload();
        notification.Data.Title = "Title";
        notification.Data.Body = "bla bla";        


        using (var fcm = new FcmSender("xxxxxx", "yyyyy"))
        {

            await fcm.SendAsync("hhhhhhh", notification);

        }



        return Ok("Done");
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

 public class GoogleNotification
    {
        public class DataPayload
        {
            [JsonProperty("title")]
            public string Title { get; set; }
            // Add your custom properties as needed
            [JsonProperty("body")]
            public string Body { get; set; }

            [JsonProperty("tag")]
            public string Tag { get; set; }
        }

        //[JsonProperty("priority")]
        //public string Priority { get; set; } = "high";

        [JsonProperty("data")]
        public DataPayload Data { get; set; }
    }

У меня есть сомнения по поводу класса GoogleNotification, как вы думаете, это правильно?

Я пытался через консоль chrome понять json который генерирует консоль Firebase. на самом деле он сильно отличается от моего кода

{
  "basics": {},
  "productAction": {
    "notificationAction": {
      "campaignId": "1581564767326567420",
      "messageText": "ciao",
      "campaignStatus": "STATUS_ENQUEUED",
      "displayParameters": {
        "title": "Titolo",
        "priority": "HIGH"
      },
      "registrationIds": [
        "dcdsdsffds"
      ],
      "expiryTime": "2419200s",
      "lastUpdateTime": "2020-01-23T09:15:57.079Z"
    }
  }
}

1 Ответ

0 голосов
/ 24 января 2020

В Firebase Cloud Messaging есть два типа сообщений, которые вы можете отправлять клиентам, см. Firebase Pu sh Уведомления :

Уведомления - Поставляется, когда приложение находится в фоновом режиме. Эти сообщения запускают обратный вызов onMessageReceived () только тогда, когда ваше приложение находится на переднем плане. Firebase предоставит пользовательский интерфейс для уведомлений, отображаемых на устройстве Android.

{
  "notification" : 
  {
    "body" : "hello",
    "title": "firebase",
    "sound": "default",
    "tag" : "msg"
  },
  "registration_ids" : ["eoPr8fUIPns:APA91bEVYODiWaL9a9JidumLRcFjVrEC4iHY80mHSE1e-udmPB32RjMiYL2P2vWTIUgYCJYVOx9SGSN_R4Ksau3vFX4WvkDj4ZstxqmcBhM3K-NMrX8P6U0sdDEqDpr-lD_N5JWBLCoV"]
}

Сообщения данных - Обрабатывается клиентским приложением. Эти сообщения запускают обратный вызов onMessageReceived (), даже если ваше приложение находится в режиме переднего плана / фона / уничтожено. При использовании этого типа сообщений вы являетесь тем, кто предоставляет пользовательский интерфейс и обрабатывает при получении уведомления pu sh на устройстве Android.

{
  "data": {
      "message" : "my_custom_value",
      "other_key" : true,
      "body":"test"
   },
 "priority": "high",
 "condition": "'general' in topics"
}

и Настройка уведомлений вы можете обратитесь к Android и ios, чтобы вы могли проверить json с вашего сервера

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