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

Daj Się Poznać 2016 — podsumowanie prac nad DePeszą

Konkurs Daj Się Poznać 2016, organizowany przez Macieja Aniserowicza, można już uznać za zakończony. Jego celem było promowanie ciekawych pomysłów, blogów i ludzi związanych z programowaniem. O szczegóły odsyłam do pierwszego wpisu z marca.

W ramach konkursu, w którym udział wzięło niemalże 300 osób (!!!), postanowiłem stworzyć aplikację dla użytkowników portalu dobreprogramy.pl. Już od jakiegoś czasu krążył po mojej głowie pomysł, aby przenieść system powiadomień ze strony www do aplikacji, która w tle sama sprawdzałaby nowe notyfikacje. Była ona adresowana do wąskiej grupy odbiorców, czyli do najbardziej aktywnych użytkowników portalu (oczywiście zwrot wąska grupa proszę nie brać dosłownie :P ). Od początku wiedziałem, co chce osiągnąć, dzięki czemu finalny stan na koniec akcji blogowej jest bardzo satysfakcjonujący.

Nowa DePesza — statystyki z bloga i odświeżony interfejs

W niedawnym wpisie odnośnie pierwszej aktualizacji dostałem bardzo dużo ciekawych uwag i pomysłów, jak ulepszyć kilka elementów w DePeszy. Przyznaję, że wiele z nich było bardzo twórczych i skłoniło mnie do poświecenia kilku wieczorów na doszlifowanie aplikacji. Ciesze się, że DePesza zyskała spore grono zainteresowanych osób chętnych do testów i dzielenia się pomysłami. Obecne wydanie jest już stabilnym i przyjemnym dla oka programem. Dziękuję również wszystkim za wnikliwe testy i podesłane uwagi (mordzio, PAMPKIN, AntyHaker, Berion, tylko_prawda).

Od kilkudziesięciu godzin w markecie dostępna jest druga aktualizacja do DePeszy.

Html Agility Pack — uzyskujemy statystyki z bloga do DePeszy, czyli parsujemy HTML w C#

Portalowa aplikacja DePesza jest już od jakiegoś czasu w Sklepie Windows. Prace nad doszlifowaniem programu i dodaniem nowych elementów trwają i jeszcze przed końcem maja pojawi się w markecie nowa wersja. Dziś jednak chciałbym przedstawić mały element, który zostanie dodany w kolejnym wydaniu DePeszy - statystyki blogowe.

Parsowanie HTML w C# - Html Agility Pack

Logowanie lub pobieranie z portalu powiadomień można było oprzeć na wymianie zapytań pomiędzy aplikacją DePesza, a serwerem dobrychprogramów (wystawiony serwis). Niestety, jeśli zechcemy uzyskać statystyki odnośnie wpisów blogowych zalogowanej osoby, musimy pokusić się o czyste parsowanie HTML.

Z tym problemem poradzimy sobie szybko przy pomocy Html Agility Pack. Jest to najlepsza biblioteka .NET do parsowania HTML. Możliwość ma ona ogromne i działa zarówno na desktopie, aplikacji mobilnej, jak i platformie Universal Windows Platform. Obsługa jej jest bardzo prosta i szybka (daaawno temu użyta przy zabawie z globalnymi statystykami portalu:

DePesza — aktualizacja i nowe pomysły

Od wydania pierwszej wersji DePeszy minęło już kilka dni. Obecnie średnia ocena na Windows 10 i Mobile wynosi 4.1. Myślę, że to nie tak źle, jak na początek prac nad apką, która jest nadal early accessem. Dziękuję za wszelakie uwagi i zgłoszone błędy. Postanowiłem szybko wydać pierwszą aktualizację, która powinna umilić zabawę z aplikacją.

Nowe ekrany

Sporo osób zauważyło, że ekrany są dość ubogie od strony graficznej. Przyznaję, że nie skupiałem się zbytnio na tym aspekcie, stąd też w nowej wersji delikatnie urozmaiciłem UI. Ekran logowania jest już znacznie przyjemniejszy w odbiorze.

Lista z powiadomieniami również uległa zmianie. Tutaj jednak nie do końca jeszcze jestem usatysfakcjonowany z końcowego efektu. Będę musiał popracować nad tym ekranem, gdyż czegoś jeszcze w nim brakuje i nadal sprawa wrażenie dość siermiężnego.

W pierwszej wersji nie było jeszcze dwóch ważnych komunikatów. Aplikacja nie informowała o ładowaniu powiadomień i nie wyświetlała nic, gdy użytkownik nie posiadał żadnych notyfikacji. Szczególnie ta ostatnia opcja była newralgiczna, gdyż pusta lista błędnie sugerowała, iż aplikacja nie działa poprawnie. Wraz z aktualizacją dodałem także i te ekrany:

DePesza — portalowa aplikacja już w markecie Windows 10

Nastał ten dzień i portalowa aplikacja DePesza zawitała do sklepu Windows 10.Zapraszam chętnych do zainstalowania aplikacji na systemie Windows 10, zarówno na desktopie, jak i na urządzeniu mobilnym.

DePesza w markecie Windows 10 i Windows 10 Mobile: link

Wersja alfa — co oferuje?

Nie ukrywam, że obecna wersja w markecie jest jeszcze wczesną wersją alfa, która posiada zapewne wiele błędów i niedoróbek. Jednakże już teraz można się zalogować w celu rozpoczęcia pracy z DePeszą i zarządzać w podstawom stopniu powiadomieniami z portalu.

Aplikacja obecnie oferuje swoim użytkownikom:

  • bezpieczne logowanie/wylogowanie
  • brak przetrzymywania hasła użytkownika
  • pobieranie listy powiadomień z portalu (odpowiednie wyświetlanie)
  • pobieranie powiadomień w trakcie pracy aplikacji (co 30 sekund)
  • pobieranie powiadomień, gdy aplikacja jest wyłączona (co 15 minut)
  • wyświetlanie graficznego okienka, gdy w pobranych powiadomieniach z portalu otrzymamy nową notyfikację

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.