Windows Phone 7 — можно ли добавить дополнительные ключи/значения в сообщения push-уведомлений

Я тестирую push-уведомления Windows Phone 7.5. У меня отлично работают 3 разных типа push (Toast, Tile и Raw), и я могу без проблем отправлять сообщения из модульных тестов и веб-приложения и получать их в своем приложении WP. Я хочу иметь возможность добавлять дополнительные свойства в push-уведомление, и тип push-уведомления Raw отлично подходит для меня, и я могу добавить пользовательские пары ключ/значение или что-то еще в push-сообщение и извлечь его в приложении для телефона. Однако я только что узнал, что это работает только в том случае, если приложение работает, а мои модульные тесты терпят неудачу (статус подавленного уведомления получен в модульном тесте), когда приложение телефона не работает (проверенная документация, которая также подтверждает это). Можно ли в любом случае добавить дополнительные свойства (ключ/значение) к всплывающим сообщениям или плиточным сообщениям или каким-то образом я могу использовать raw по-другому? Всплывающие уведомления кажутся ограниченными свойством заголовка и фактическим свойством сообщения, но мне нужно добавить дополнительные данные.

Просто интересно, есть ли у кого-нибудь предложения/обходные пути?


person Gavin    schedule 19.04.2012    source источник


Ответы (2)


Общая практика, которую я использую, заключается в том, чтобы сначала отправить необработанное уведомление на устройство с данными, которые можно использовать на телефоне, встроенными в сообщение. Если мое приложение в данный момент запущено, я могу обработать содержимое необработанного сообщения и сразу же использовать его на телефоне. Однако, если приложение в данный момент не запущено на телефоне, вы получите уведомление от push-серверов о том, что сообщение не может быть доставлено. Если я получаю этот ответ, я отправляю уведомление Toast/Tile.

В уведомлениях Toast единственная параметризация, к которой у вас есть доступ, — это URI, который запускает приложение. Это указано в узле wp:param сообщения. Например.

<wp:Notification xmlns:wp="WPNotification">
  <wp:Toast>
    <wp:Text1>Toast Title</wp:Text1>
    <wp:Text2>Toast sub title</wp:Text2>
    <wp:Param>/MainPage.xaml?LaunchedFrom=A%20Toast%20Notification</wp:Param>
  </wp:Toast>
</wp:Notification>

Если пользователь коснется этого всплывающего уведомления, ваше приложение запустится и перейдет к MainPage.xaml. Вы можете получить доступ к строке запроса, переданной через файл NavigationContext.QueryString.

Примечание. Узел wp:Param можно отправлять только на устройства Mango (и выше). Кроме того, все содержимое должно содержать менее 256 символов, иначе вы получите ошибку PushErrorTypeMessageBadContent. (Спасибо Ритчу Мелтону за указание на это). Дополнительные сведения см. на странице Отправка push-уведомлений для Windows Phone в MSDN.

person MrMDavidson    schedule 19.04.2012
comment
Отличное дополнение! Я не знал об этом. Это весь Uri или строка запроса? Есть ли шанс получить ссылку на эту информацию? - person MrMDavidson; 20.04.2012
comment
msdn.microsoft.com/en-us/library /hh202945(v=vs.92).aspx — прокрутите вниз до середины страницы в разделе «Важная информация». Есть и другие ограничения на время загрузки, а что нет, поэтому вы должны быть осторожны, пытаясь сделать слишком много с этими уведомлениями. - person Ritch Melton; 20.04.2012
comment
Спасибо. Обновленный ответ с соответствующей информацией. - person MrMDavidson; 20.04.2012
comment
Спасибо. Да, я думаю, что могу добавить дополнительные данные в ‹wp:Param›, так как мне нужно всего несколько дополнительных битов данных, и они не будут превышать 256 символов, я не думал об этом. В противном случае для чего-то большего, похоже, мне придется отправить запрос на сервер, чтобы получить его. Надеялся избежать этого, если это возможно, но спасибо за подтверждение этого. - person Gavin; 20.04.2012

Как вы уже заметили, служба push-уведомлений Microsoft очень строго регламентирует типы сообщений, которые вы можете отправлять и получать. Целью этих push-уведомлений является предоставление простых push-уведомлений, а не больших объемов данных. Гибкий тип Raw кажется вполне подходящим, пока вы не обнаружите, что:

Вы можете использовать необработанное уведомление для отправки информации в ваше приложение. Если ваше приложение в данный момент не запущено, необработанное уведомление отбрасывается службой push-уведомлений Microsoft и не доставляется на устройство.

Однако, если вы отправляете всплывающее уведомление своему приложению, когда пользователь щелкает всплывающее уведомление, приложение запускается. Когда ваше приложение запускается, вы должны проверить службу и получить данные, которые вы пытаетесь отправить, из веб-службы или другого удаленного механизма.

person Ritch Melton    schedule 19.04.2012