Jakub Florczyk - Blog o programowaniu .NET

Programista praktyczny

ID aplikacji Windows Phone

Jakiś czas temu znalazłem ciekawy trick na uzyskanie ID aplikacji Windows Phone.

Całość sprowadza się do odczytania pliku WMAppManifest.xml:

using System;
using System.Xml.Linq;

namespace PhoneApp.ApplicationId
{
    public static class ApplicationProperties
    {
        public static Guid GetId()
        {
            Guid applicationId = Guid.Empty;

            var productId = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("ProductID");

            if (productId != null && !string.IsNullOrEmpty(productId.Value))
                Guid.TryParse(productId.Value, out applicationId);

            return applicationId;
        }
    }
}

Po czym, wystarczy odpalić metodę GetId aby uzyskać ID aplikacji w dowolnym miejscu kodu:

using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;

namespace PhoneApp.ApplicationId
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void ButtonShowId_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(ApplicationProperties.GetId().ToString(), "My id is:", MessageBoxButton.OK);
        }

        private void ButtonShare_Click(object sender, RoutedEventArgs e)
        {
            ShareLinkTask shareLinkTask = new ShareLinkTask();
            shareLinkTask.Title = "Check this app!";
            shareLinkTask.LinkUri = new Uri(string.Format("http://www.windowsphone.com/s?appid={0}", ApplicationProperties.GetId()), UriKind.Absolute);
            shareLinkTask.Show();
        }
    }
}

Przydatny kawałek kodu, który uchroni nas przed hard kodowaniem ID i podwójną publikacją aby uzyskać ten numer a potem aby finalnie opublikować aplikację.

Na warsztatach Nokia dla developerów Windows Phone najlepsza była… kawa

Dzisiaj pofatygowałem swoje szanowne cztery litery na warsztaty Nokia dla developerów Windows Phone. Trochę z chęci do otarcia się o świat wielkich idei a trochę z powodu znajomego, który mnie podpuszczał, że pewnie mam za duże ego aby się na takie warsztaty wybrać.

Miejsce warsztatów, to nowoczesny budynek Auditorium Maximum Uniwersytetu Jagielońskiego. Jak wszedłem do budynku to moje IQ wzrosło o 10 punktów i osiągnęło nigdy wcześniej nie osiągnięty pułap 20 punktów. Trochę wcześniej kluczyłem uliczkami próbując zaparkować swoją furmankę w jakby na to nie patrzeć centrum Krakowa. A każdy kto próbował tego dokonać w poniedziałkowy poranek wie, że bardziej prawdopodobne jest spotkanie Małopolanin, który wychodzi “na dwór”.

Zapowiadało się nieźle, przemiła hostessa z Allegro, która próbowała mnie namówić na staż w dziale developerskim Windows Phone. Na co pewnie bym się zgodził jakby spalili dotychczasową aplikację na WP (wraz z jej autorem).
Przestronna sala z kontaktami! Z oszołomienia musiałem się uszczypnąć, bo na MTS gniazdka dostępne są dla najszybszych lemingów a tu był ich nadmiar i to przy stolikach!

Ale po tym wstępie było tylko gorzej. Nie dość, że Nokia jakoś nie bardzo miała zamiar uzupełnić mój uszczuplony zasób długopisów i notatników z własnym logiem; to nie dawali nawet bajeranckich smyczy ani koszulek! Oburzony i zły usiadłem na losowo wybranym miejscu i rozpocząłem przysłuchiwanie się co mają do zaprezentowania prowadzący. Mniemałem, że skoro nie ma gadżetów to może poziom mnie oszołomi. Ale tak się nie stało…

Nie mam pretensji do prowadzących. Bo jednak w dwójkę trudno jest ogarnąć taką ilość materiału i przedstawić ją w kilka godzin. Ale merytorycznie są to warsztaty dla początkujących. Jeśli nie wiesz nic; to idź – wypijesz dobrą kawę i zjesz dobre ciastko. Ale jeśli już coś wiesz to umrzesz z nudów.

Nokia powinna uczyć się od Microsoft:

  • ilość hostess powinna być równa lub większa niż przekątną statystycznego notebooka na sali. My rzadko obcujemy z kobietami (pomijając te w jpg) i takie, które na nasz widok nie uciekają są dla przeciętnego developera ciekawym obiektem przemyśleń i analiz prowadzonych podczas nudnego wykładu.
  • orężem każdego inżyniera jest długopis i notatnik. Na każdej konferencji trzeba ich rozdawać aż nadto a my potem się nimi pieczołowicie opiekujemy nie oddając ich nawet dzieciom do malowania świeżo pomalowanych ścian.
  • smycze przyjmujemy w każdej ilości. Wieszając na nich klucz od naszych komórek w suterenach i od składzików na węgiel.
  • foldery, płyty CD, kolorowe katalogi. I tak je później wywalimy do kosza. Ale Pełna reklamówka PR’u wskazuje na udaną konferencję. A nasza żona nie podejrzewa nas o wypad do sąsiadki ;-)
  • więcej prowadzących z naciskiem na praktyków, którzy zjedli na temacie zęby. To podstawa udanego wykładu, bo nawet jak nie potrafią prowadzić takich wykładów, to można się od nich czegoś nauczyć od strony praktycznej a nie marketingowego paplania.

Nie ukrywam, że po cichu liczyłem na dar z nieba w postaci jakieś ładnej nowej Lumii; albo chociaż jakiś kupon zniżkowy! Przecież to nokia! Rzucają tymi słuchawkami na prawo i lewo w każdym konkursie, nie zbiednieliby gdyby developerzy dostali kilka setek nowiutkich słuchaweczek. Co ciekawe, ludzi z telefonami WP było stosunkowo mało. Więcej androidów a nawet kilku agentów z Cupertino posiadających o zgrozo iPhone’y.

Podsumowując było miło, ale spodziewałem się czegoś więcej. Tak się chyba nie zdobywa developerów. A ja na miejscu programisty, który dopiero bada rynek, nie przekonałbym się do platformy. Pomijam już fakt, że nie było ani słowa o narzędziach do promocji aplikacji pod brandingiem Nokii. A sama monetyzacja była potraktowana po macoszemu; a to przecież pieniądze mogą przekonać dopiero rozpoczynających przygodę do spróbowania swoich sił.

PS: Lunch także był niezły :)

Zune vs Google Play vs App Store

Przeszukiwanie Zune pod względem nowych aplikacji, które warte są sprawdzenia to katorga. Kategorie i zestawienia, które istnieją w aplikacji jaki i na www to smutny żart.

Ponieważ nie chce mi się tłumaczyć oczywistych niedoróbek w Zune; polecam każdemu trzy proste obrazki – znajdź różnicę między nimi.

Zune:

Google Play:

App Store:

Syncfusion Metro Studio

Jednym z problemów tworzenia interfejsów użytkownika od początku istnienia platformy Windows Phone było odszukanie (ewentualnie narysowanie) odpowiednich ikon zgodnych z zaleceniami Mango.

Choć wielu grafików już przygotowało własne zestawy ikon, to często dostarczany przez nich format albo rozmiar wymuszał edycję w Gimpie albo innym programie graficzny.

Wydaje się jednak iż koniec problemów dzięki oprogramowaniu od Syncfusion. Program nazywa się Syncfusion Metro Studio i zawiera nieprzebrane ilości ikon, które można wykorzystywać w aplikacjach. Każdą ikonę można wygenerować w kilku formatach, rozmiarach i dowolnej kolorystyce. Polecam bo to jedno z bardziej przydatnych narzędzi jakie ostatnio znalazłem w sieci.

Wykop dla Windows Phone

Trochę to trwało. Ale czasem warto poczekać :) Od pewnego czasu jest już dostępny Wykop dla Windows Phone mojego autorstwa.

Wykop to serwis, w którym użytkownicy wyszukują najciekawsze informacje znalezione w Internecie, a następnie oceniają, komentują i polecają je swoim znajomym. Ta prosta idea wdrożona w życie sprawia, że Wykop jest zawsze aktualnym odzwierciedleniem tego, czym żyje Internet.

Funkcje:
- Przeglądanie głównej, wykopaliska i mikrobloga.
- Dodawanie wpisów i komentarzy na mikroblogu.
- Wykopywanie, komentowanie, dodawanie do ulubionych i obserwowanych linków.
- Przeglądanie ulubionych i obserwowanych.

Więcej funkcji już wkrótce.




Windows Phone Design Mistakes and How to Avoid them

David Crawford, User Experience Consultant w Microsoft opowiada o błędach popełnianych przy projektowaniu aplikacji dla Windows Phone. Polecam, bo to jeden z niewielu filmów o projektowaniu, przy którym nie zaśniecie; rzeczowy i na temat, bez zbędnego lania wody.

Telerik pokazał środkowy palec Red Gate Software

Chyba każdy developer .NET używał starego dobrego Reflector-a. Ale w momencie kiedy oprogramowanie zostało wykupione przez Red Gate w sieci podniosło się wielkie larum. Sam byłem zdenerwowany sytuacją w której darmowy produkt, którego używam często nagle staje się płatny.

Co zabawne jakiś rok temu próbowałem go kupić. Ale o dziwo Red Gate nie chciał zaakceptować mojej karty z Inteligo, którą do tej pory płaciłem w sieci wszędzie i za wszystko bez jakichkolwiek problemów. Oczywiście email na pomoc techniczną pozostał bez odpowiedzi, co jeszcze podniosło moją niechęć do Red Gate.

Niestety przez długi czas nie mieliśmy żadnej alternatywy aż do czasu gdy Telerik pokazał Red Gate środkowy palec i udostępnił JustDecompile:

JustDecompile will be free forever, and there’s no time bomb anywhere in the product.

I jak tu nie poczuć sympatii do poczucia humoru ludzi z Telerika!?

Użyteczne rozszerzenia 4/n!

Konwersja koloru “z” oraz “do” Int32 oraz konwersja z zapisu szesnastkowego.

Dwa pierwsze rozszerzenia są przydatne przy konwersji kolorów z WriteableBitmap.

// metody
public static Color ToColor(this int value)
{
    return new Color()
    {
        A = (byte)(value >> 24),
        R = (byte)(value >> 16),
        G = (byte)(value >> 8),
        B = (byte)(value)
    };
}

public static int ToInt32(this Color c)
{
    return (int)(c.A << 24) + (int)(c.R << 16) + (int)(c.G <<8) + (int)c.B;
}

public static Color ToColor(this uint argb)
{
    return Color.FromArgb(
        (byte)((argb & 0xff000000) >> 24),
        (byte)((argb & 0xff0000) >> 16),
        (byte)((argb & 0xff00) >> 8),
        (byte)(argb & 0xff));
}

// sposoby użycia
Colors.Black.ToInt32();
255.ToColor();
0xFF339933.ToColor();

Użyteczne rozszerzenia 3/n!

Uzupełnienie rozszerzenia z części pierwszej dotyczącego nawigacji w Windows Phone.

Nawigowanie do typów w Windows Phone z parametrami:

// metoda
public static bool Navigate<T>(this NavigationService navigationService, string query) where T : PhoneApplicationPage
{
    return navigationService.Navigate(new Uri(String.Format("/{0}.xaml{1}", typeof(T).Name, query), UriKind.Relative));
}

// sposób użycia
NavigationService.Navigate<CommentAddPage>("?Id=" + comment.Id + "&Author=" + HttpUtility.UrlEncode(comment.Author));

31 Weeks of Windows Phone Metro Design

Arturo Toledo na swoim blogu kilka tygodni temu rozpoczął serię artykułów o projektowaniu interfejsów dla Metro na Windows Phone. Polecam każdemu kto nawet w najmniejszym stopniu bierze udział w projektowaniu / wykonywaniu aplikacji na Windows Phone. Arturo bardzo dokładnie i wnikliwie przedstawia wszystkie aspekty projektowania i tworzenia interfejsów od podstaw ideowych, poprzez wybór odpowiednich typów aż po konwersje z istniejących nośników.