pondělí 24. října 2011

Push notifikace a Encoding

Zrovna jsem se pral s jedním problémem při posílání Push notifikací na telefon s WindowsPhone. Příklad z Microsoft stránek fungoval v pořádku. Jakmile jsem to ale předělal na webovou službu, tak se mi najednou objevovala jedna a ta samá chyba:
MessageBadContent
A remote URL was specified in the tile notification payload and one of the following conditions was not met: 1) It was not http://, 2) the host name exceeded 256 characters, 3) the URL exceeded 2055 characters, 4) the domain was not specified in the allowed domains collection.

Zvláštní bylo, že byla stejná pro Tile i Toast zprávy. Přeci jen v Toast zprávě nejde definovat url adresu, takže špatný typ chyby :-/
Strýček Google mi ale vůbec tentokrát nepomohl. Až náhodou po několika bezesných nocích ;-) jsem si všiml drobného detailu. U testu z MS jsem používal jednoduché texty bez diakritiky, kdežto webová služba se snažila posílat reálná data. A hned byl problém jasný. Při převodu zprávy na byte jsem měl definované výchozí kódování. Bohužel to ale nebylo UTF8, jak jsem tupě předpokládal, ale Windows 1250. Stačilo jen změnit Encoding.Default na Encoding.UTF8 a všechno začalo fungovat tak jak má :-)