Как использовать шаблон push-уведомлений с несколькими пользовательскими свойствами в центре уведомлений Azure?

Мы следуем этому руководству: Практическое руководство. Центры уведомлений Windows Azure (приложения для Android ) для Android.

Все работает нормально при структурировании полезной нагрузки уведомлений, как описано в руководстве. То есть:

{
    "data": {
        "msg": "$(property1)"
    }
}

Однако мы хотели бы расширить шаблон, чтобы использовать более одного пользовательского свойства в полезной нагрузке. Что-то вроде:

{
  "data": {
    "msg": {
        "message": "$(property1)",
        "sender": "$(property2)"
    }
  }
}

где бэкэнд предоставляет значения свойств через:

Dictionary<string, string> templateValues = new Dictionary<string, string>
    {
        { "property1", "Hello world" },
        { "property2", "foo" }
    };

NotificationOutcome notificationOutcome = await Hub.SendTemplateNotificationAsync(templateValues, "test");

При регистрации шаблона в центре уведомлений из мобильного приложения мы получаем следующую ошибку:

"Поставленная полезная нагрузка уведомления недействительна"

  • Можно ли использовать несколько свойств в шаблоне?
  • Должны ли мы вместо этого отправлять значение свойства (из серверной части) в виде строки JSON (или другой структуры)? Какой предпочтительный подход? Мы будем использовать шаблон на нескольких платформах (iOS, Android)

заранее спасибо

2 ответа

Решение

Полезная нагрузка недопустима, потому что GCM не поддерживает вложенный объект в элементе данных. Вы можете отправить сообщение с двумя свойствами, зарегистрировавшись для следующего шаблона:

{
   "data": {
      "message": "$(property1)",
      "sender": "$(property2)"
   }
}

В вашем приемнике Android, вы можете получить вашу собственность с

intent.getStringExtra("property1");

В моих тестах вы можете добавить свои параметры:

Шаблон:

{
   "data": {
      "message": "$(property1)",
      "args": "$(property2)",
      "myargs": "$(property3)",
   }
}

Данные:

{  
    "property1":"Jonh",    
    "property2":"1,1",
    "property3":"0",
}

Результаты:

intent.Extras.GetString("message");
intent.Extras.GetString("args");
intent.Extras.GetString("myargs");
Другие вопросы по тегам