Я использую концентратор уведомлений с FCM для отправки уведомлений в приложение для Android. Я хочу установить приоритет сообщения и время, чтобы жить собственностью дополнительно с каждым уведомлением, но центр уведомлений ожидает jsonpayload и теги в методе SendGcmNativeNotificationAsync на HubClinet. Я не уверен, как добавить эти дополнительные свойства в полезную нагрузку.Как установить время для работы с полезной нагрузкой GCM/FCM в концентраторе уведомлений
1
A
ответ
3
Мы можем добавить эти свойства в нашу пользовательскую модель в правильном формате, а затем преобразовать их в полезную нагрузку json.
public class GcmNotification
{
[JsonProperty("time_to_live")]
public int TimeToLiveInSeconds { get; set; }
public string Priority { get; set; }
public NotificationMessage Data { get; set; }
}
public class NotificationMessage
{
public NotificationDto Message { get; set; }
}
public class NotificationDto
{
public string Key { get; set; }
public string Value { get; set; }
}
метод вызова SendNotification анс передать ваши model.Now вы можете конвертировать ваши данные в формате JSON конвертер, но помните использовать строчную настройку в JsonConverter иначе может быть expection на устройстве. У меня есть реализация этого в классе LowercaseJsonSerializer.
private void SendNotification(GcmNotification gcmNotification,string tag)
{
var payload = LowercaseJsonSerializer.SerializeObject(gcmNotification);
var notificationOutcome = _hubClient.SendGcmNativeNotificationAsync(payload, tag).Result;
}
public class LowercaseJsonSerializer
{
private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
ContractResolver = new LowercaseContractResolver()
};
public static string SerializeObject(object o)
{
return JsonConvert.SerializeObject(o,Settings);
}
public class LowercaseContractResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName.ToLower();
}
}
}