5

Zapisany identyfikator URI kanału informacyjnego może przestać działać, gdy moja aplikacja jest nieaktywna - tzn. Zatrzymana, nagwana lub uśpiona. Jaka jest najlepsza praktyka aktualizowania identyfikatora URI kanału przez moją usługę internetową po okresie bezczynności?Jak zaktualizować identyfikator URI kanału MPNS po nieaktywności aplikacji?

Różne artykuły w Internecie wspominają o "pobieraniu" URI w celu wysłania go do serwisu internetowego. Ale z tego co wiem, jedynym sposobem, w jaki moja aplikacja może nauczyć się identyfikatora URI kanału, jest zdarzenie ChannelUriUpdated na HttpNotificationChannel, a podniesienie tego wydarzenia nie jest pod moją kontrolą. Protokół MPNS mógł zmienić identyfikator URI, gdy moja aplikacja była nieaktywna. Jeśli aplikacja nie mogła odpowiedzieć na ChannelUriUpdated, identyfikator URI byłby nieaktualny zarówno w mojej aplikacji, jak i mojej usłudze internetowej.

Być może kanał zwrócony przez HttpNotificationChannel.Find ma zawsze aktualny identyfikator URI kanału?

+0

Aby wyjaśnić, nie pytam, jak ogólnie śledzić identyfikator URI kanału. Pytam, jak się upewnić, że identyfikator URI kanału jest aktualny natychmiast, gdy aplikacja się obudzi z okresu bezczynności (np. – lencharest

+0

Gdy twoja aplikacja przebudzi się z tombstoningu, jeśli twój obecny kanał stał się nieważny, otrzymasz null NotificationChannel.ChannelUri. W takim przypadku wystarczy powiadomić serwis internetowy i poczekać na nowy link z ChannelUriUpdated. Nie ma możliwości pobrania nowego identyfikatora URI kanału z MPNS. –

Odpowiedz

0

ogólne Najlepszym rozwiązaniem jest poprosić bieżącego kanału Uri, gdy aplikacja jest uruchamiany. W aplikacji należy śledzić ostatnią zwróconą wartość (za pośrednictwem wywołań aplikacji) i zmienić ją w celu przesłania do usługi internetowej.

+0

W jaki sposób żądasz identyfikatora URI kanału? Wydarzenie ChannelUriUpdated pozwala MPNS wprowadzić nową wartość do aplikacji, ale jak mogę "wyciągnąć" bieżący identyfikator URI z MPNS? Nie widzę dla tego API. – lencharest

+0

Po dalszej refleksji, zastanawiam się, czy masz na myśli po prostu uzyskać właściwość Http.NotificationChannel.ChannelUri. – lencharest

+0

@lencharest Myślę, że będziesz musiał przechowywać w odizolowanej pamięci nowy identyfikator URI za każdym razem, gdy zostanie uruchomione zdarzenie ChannelUriUpdated. Następnie, jako niekończący się cykl, twój ostatni zapisany kanał Uri jest "aktualny", a nowy kanał odzwierciedlony w powiadomieniu jest nowy. Porównaj, a jeśli są różne, powiadom swoją usługę internetową. –

0

Proszę obserwować tą zaktualizowany dokument here. to, co robi, uruchamia skrypt przy wstawianiu kanału uri, sprawdza, czy kanał URI się kończy, czy istnieje, nie wstawia rekordu, w przeciwnym razie wstawi rekord. tak więc, gdy kanał uri dla urządzenia wygaśnie, w tym przypadku zostanie podany nowy kanał uri, niedopasowanie porównań i nowy kanał uri zostanie wstawiony. w ten sposób urządzenie zawsze otrzymuje powiadomienie.

Uwaga: Aby wykorzystać tę funkcjonalność, należy wysyłać wkładkę przy każdym uruchomieniu aplikacji. mam nadzieję że to pomoże.

Powiązane problemy