Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

DePesza portalowa aplikacja na Windows 10 — z dziennika dewelopera

Prace nad aplikacją nadal trwają. Dziękuję, za docenienie tej serii i oddane głosy na moje wpisy w marcowym konkursie blogowym ;)

Jak już zapewne zauważaliście, została wybrana nazwa na aplikację portalową. Dziękuję wszystkim za komentarze. Propozycji było bardzo dużo. Wybór padł na nazwę, która jest prosta i wpadająca w ucho, a dodatkowo bardzo sprytnie kojarzy się z portalem:

DePesza

Autorem DePeszy jest użytkownik: Czajo. Gratuluję i dziękuję za wzięcie udziału w zabawie. Prócz klucza na Steam do gry Murdered: Soul Suspect dodatkowo dorzucam jeszcze klucz do gry Arma: Gold Edition.

Pozostałe wyróżnione osoby:

Zadania działające w tle w Universal Windows Platform

Aplikacja do powiadomień z portalu jest już na takim etapie, że z powodzeniem testuje ją na co dzień na swoim komputerze i smartfonie z Windows 10. Zapewne ważnym elementem jest praca w tle, nawet wówczas, gdy aplikacja nie jest uruchomiona.

Dziś zaprezentuję w jaki sposób powiadomienia są pobierane w czasie, gdy aplikacja nie jest na głównym planie, a także jeśli nie została nawet otwarta. Nowa platforma od Microsoftu oferuje kilka ciekawych elementów, które pozwalają na wykonywanie zadań w tle, w odpowiedzi na zadany trigger (wyzwalacz).

Background Task - niezależny kod wykonywany w tle

Zadania działające w tle mogą w ciekawy sposób rozszerzyć funkcjonalność aplikacji na urządzeniu mobilnym lub desktopie. W tym celu obecnie można stworzyć kilka Background Tasków, każdy z nich może być aktywowany w zależności od potrzeb. Taki task musi implementować interfejs IBackgroundTask. Działać on może nawet wówczas, gdy aplikacja nie jest uruchomiona.

Aktywacja na zdarzenie systemowe

Można zatem stworzyć zadanie, które będzie aktywowane w odpowiedzi na zdarzenia systemowe. Mogą to być np:

  • Internet stał się dostępny/niedostępny
  • otrzymano SMS

Konkurs na nazwę aplikacji dobreprogramy.pl, a także niesforny Visual Studio

Tworząc uniwersalną aplikację do powiadomień z portalu dobreprogramy natknąłem się na bardzo ciekawy problem. Postanowiłem opisać ową przygody, a także zapytać Was o pomysł na nazwę aplikacji portalowej :)

Na początku skupmy się jednak na ciekawym przypadku...

Device cannot be found

W ostatnim czasie dostaliśmy najnowszą aktualizację Update 2 do Visual Studio 2015. Oczywiście wersja Community, którą używam, otrzymała również ową paczkę. Okazało się jednak, że po tej aktualizacji VS przy próbie wrzucenia aplikacji portalowej na smartfon zaczął rzucać błędem:

Bootstrapping failed. Device cannot be found. 0x89731810: Deployment failed because no Windows Phone was detected. Make sure a phone is connected and powered on.

Żeby jeszcze bardziej zaciemnić obraz, w tym samym czasie wgrałem (ponownie!) na Lumię 925 Windows 10 Mobile z gałęzi Redstone.

Stanąłem przed niebłahym problemem. Visual Studio przestał wykrywać mój telefon. Pierwsze podejrzenia padły na Redstone.

Wyskakujące powiadomienia w Windows 10 — aplikacja portalowa w UWP

Ostatnio pokazałem pierwszą działającą wersję aplikacji w UWP (Universal Windows Platform), która posiadała logowanie i wyświetlała prosty, niesformatowany tekst powiadomień. W dzisiejszym wpisie przedstawię kolejne nowe rzeczy, jakie dodałem do programu.

Toast notifications w Windows 10

Microsoft w nowej wersji okienek udostępnił znacznie poprawiony system powiadomień. Opiera się on na dokumencie XML i umożliwia całkiem sporą konfigurację. Oczywiście notyfikacje dostępne są zarówno na Windows 10, jak i na mobilnych okienkach.

W tej wersji dostaliśmy większe pole do popisu, jeśli chodzi o dostosowanie powiadomienia do własnych potrzeb. Możemy dodawać przyciski, zmieniać ułożenie tekstu czy grafiki, a także umieścić pole tekstowe (idealne do szybkich odpowiedzi na SMSa). Powiadomienia trafiają również do Centrum Akcji i mogą posiadać własny schemat dźwiękowy.

Zobaczmy zatem jak wygląda to w praktyce, na przykładzie tworzonej aplikacji.

Wyskakujące powiadomienia z dobreprogramy.pl

Zacznijmy zatem od szablonu XML, jaki będzie użyty w naszym przypadku. Na tę chwilę jest on jawne wklejony jako string. Do operacji na XML używać będę klasy XmlDocument:

Pierwsza wersja aplikacji, ciasteczka i refactoring — dobreprogramy na Windows 10

Wcześniejsze dwa wpisy przedstawiały kompletny sposób na zalogowanie się do portalu i zarządzanie powiadomieniami. W momencie tworzenia już UI, pod Universal Windows Platform (UWP), okazało się jednak, że potrzebny jest mały refactoring, wymuszony przez cachowanie ciasteczek, które powoduje w pewnych przypadkach problemy. Dodatkowo zmieniło się założenie co do przechowywania danych użytkownika w apce, a także powstały dwa pierwsze ekrany do próbnej wersji aplikacji.

Cachowanie ciasteczek

Plan na napisanie aplikacji zakładał to, iż przy pierwszym requeście będziemy pobierali ciasteczko, a następnie do logowania i pozostałych działań na powiadomieniach będzie ono przesyłane z każdy zapytaniem. Był to dobry pomysł, ale niestety okazało się, że nadpisanie ciasteczka per request nie jest idealne.

Otóż ciasteczko z ID sesji przy logowaniu jest cachowane odgórnie i przesyłane w kolejnych zapytaniach.

Powiadomienia z dobreprogramy.pl w C# — z dziennika dewelopera

Prace ku stworzeniu uniwersalnej aplikacji Windows 10 (+ Mobile) obsługującej powiadomienia z portalu dobreprogramy.pl posuwają się na przódu. We wcześniejszym poście przedstawiłem kod (plus projekt w VS), który służy do logowania się na swoje konto z poziomu C#. Został nam zatem ostatni etap w przygotowaniu serca naszej aplikacji - zarządzanie powiadomieniami. Zatem do dzieła!

Pobieramy powiadomienia z portalu w formacie JSON

Analiza sposobu działania powiadomień na portalu została przedstawiona w poście: Analizujemy kod portalu dobreprogramy.pl — czyli jak działa system pow.... Dziś przejdziemy już jednak do kodowania.

Zacznijmy zatem od pobrania JSONa z listą powiadomień dla zalogowanego użytkownika. Zakładamy oczywiście, że posiadamy już ciasteczko (w kodzie jest to zmienna cookie), które identyfikuje zalogowanego użytkownika.

Logujemy się do dobreprogramy.pl z poziomu kodu C# (+ wprowadzenie do projektu)

Dwa ostatnie wpisy przedstawiały analizę sposobu logowania się i zarządzania powiadomieniami na portalu dobreprogramy. Przyszedł już czas na stworzenie kodu w C#, który pozwałaby już coś w praktyce zrobić.

Dzisiaj skupimy się na logowaniu do portalu, a zapewne na dniach przedstawię mechanizm do zarządzania powiadomieniami.

Na początku jednak mały wstęp odnośnie samego projektu.

Szkielet aplikacji

Aplikacja tworzona będzie w Visual Studio 2015 Community (wersja pozwala na działania komercyjne, zupełnie za darmo, szczegóły licencji tutaj).

Projektem naszym jest oczywiście aplikacja uniwersalna - Universal Windows. Pozwala ona na tworzenie oprogramowania zarówno pod Windows 10, jak i Winodows 10 Mobile.

Analiza logowania do portalu dobreprogramy.pl — uzyskujemy dostęp do zasobów użytkownika

Za nami już wpis odnośnie sposobu działania systemu powiadomień na portalu. Przed przystąpieniem do tworzenia kodu należy koniecznie przeanalizować jeszcze jeden, najważniejszy element tego zagadnienia - logowanie do portalu.

System powiadomień, opisany wcześniej, działa na podstawie zalogowanego użytkownika, czyli na podstawie ciasteczka przechowywanego w przeglądarce klienta.

Mieć ciastko i zjeść ciastko

Ponownie do pracy niezbędne będzie nam narzędzie deweloperskie, dostarczone wraz z przeglądarką. Zaczniemy od ciasteczka. Kiedy użytkownika podłączy się do aplikacji ASP.NET generowana jest sesja, która identyfikowana jest po unikalnym kluczu. Ów klucz zwracany jest dla użytkownika i przechowywany w ciasteczku w przeglądarce. Aplikacja ASP.NET wrzuca klucz w ciasteczko o nazwie: ASP.NET_SessionId.

Sesja tworzona jest już przy podłączeniu do aplikacji webowej, zatem już przed zalogowaniem otrzymujemy id sesji. Własne ciasteczko możemy podejrzeć w narzędziu deweloperskim, wchodząc na zakładkę Resources i klikając na

Analizujemy kod portalu dobreprogramy.pl — czyli jak działa system powiadomień

Ostatnim wpisem rozpoczął serię, która będzie opisywać zmagania z tworzeniem aplikacji do przechwytywania powiadomień z portalu dobreprogramy.pl w Windows 10 (+Mobile). Przyszedł zatem czas na coś konkretnego. Dziś przedstawię analizę, w jaki sposób na stronie zostało zrobione pobieranie powiadomień dla zalogowanego użytkownika.

Z jednej strony będzie to dobrym wstępem do kolejnych wpisów i podwaliny pod rozpoczęcie prac nad kodem, a z drugiej strony zapewne można będzie się czegoś ciekawego dowiedzieć o aplikacjach web :) (mam nadzieję :P )

Do dzieła! :)

Nie będzie tutaj żadnej magii. Poniżej analizujemy jedynie i obserwujemy, jak działa system powiadomień od strony przeglądarki. Bez ingerencji w kod portalu.

F12 - zaczynamy analizę!

Pracę rozpoczniemy standardowo, jak zawsze kiedy zabieramy się za bałagan po stronie frontendu, czyli od narzędzi deweloperskich w przeglądarce. Akurat z racji używania na co dzień Chroma, będzie to standardowe narzędzie dla programistów, dostępne zawsze pod klawiszem F12.

Gdzie na stronie są powiadomienia?

Na początku można wywnioskować, że powiadomienia są przesyłane jedynie na początku, przy ładowaniu strony.

Powiadomienia z dobreprogramy.pl na Windows — konkurs „Daj się poznać 2016”

Na portalu dzieje się coraz więcej, a szczególnie teraz, gdy Redakcja uruchomiła swojego bloga, a także BugTrackera. Szczególnie ten ostatni jest interesującym eksperymentem, który wydaje się być świeżym podejściem do kontaktu z czytelnikami w polskim Internecie.

W ten klimat idealnie wpisywać się będzie ciekawa inicjatywa, której będę uczestnikiem :)

Daj się poznać - edycja 2016

Niedawno wystartował konkurs Daj się poznać, a jego celem jest rozruszanie programistów, którzy prowadzą blogi. Każdy z uczestników musi założyć nowy (lub kontynuować już istniejący) projekt open source i udostępnić go na GitHubie.

Głównym celem nie jest stworzenie czegoś, co będzie wyjątkowe na skalę międzynarodową, a dzielenie się wiedzą i kodem z innymi.