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
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.
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.
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.
Xbox Live na Windows Phone z łyżką dzięgciu
Xbox Live na Windows Phone jest jak święty graal, jak gwiazdka w lipcu, jak wygrana kumulacji w Lotto. A może jednak nie do końca?
Każdy kto czasem zagląda w nowe gry na WP pewnie już znalazł ARMED!. Gra bardzo ciekawa, nie tylko dlatego że bardzo ładnie graficznie zrealizowana to jeszcze opiera się na bardzo dobrym pomyśle turowego RTS’a. Poza wpadką z lokalizacjami (która już jest poprawiona) i trochę upierdliwą nawigacją nie ma się do czego przyczepić no może poza tym, że nie jest to gra z Xbox Live.
Byłem tym faktem trochę zdziwiony, bo XL (Xbox Live) czasem zawiera straszne gnioty jak np Breeze – kompletnie nie ogarniam idei tej gry a po trzech ziewnięciach i jednej gwiazdce ją wywaliłem z hukiem. Ale nie na tyle zdziwiony aby szukać przyczyny. Aż przed kilkoma dniami na WMPowerUser pojawiła się notka autorów a propos braku XL:
A large reason we didn’t support Xbox Live is because of some of the technicalities of their system. If we had went with Xbox Live we wouldn’t be able to release bug fixes/updates for 2-4 weeks AFTER they’re finished due to their certification process. Not being a Live title, allows us to ship updates a couple days after they’re ready. Quickly fixing issues and releasing new content is something we value highly and wouldn’t sacrifice that for anything.
That being said, we are looking into a system that will allow you to earn achievements. (Though they won’t be for Xbox Live/Gamerscore).
Ale to nie koniec historii. Otóż okazuję się z facebook’a i z komentarzy na WMPowerUser iż tak naprawdę twórcy Armed! próbowali pokazać grę ludziom z Microsoft’u ale po wielu emailach bez odpowiedzi odpuścili temat.
Wniosek jaki z tego wynika jest taki, że MS nie ma ochoty wspierać małych producentów przez XL a tylko studia, które o zgrozo przeniosły swoje pozycję z iPhone i Android. Nie trudno wpaść na myśl, że jest to lekko ironiczna sytuacja dla Microsoft’u.
Zabawna sytuacja wynika także z samych aktualizacji gier z XL. Mam ich zainstalowanych około dziesięć od początku dostępności sklepu. W tym czasie tylko PVZ dostało aktualizację. A nieszczęsny Guitar Hero 5 nie działa od pierwszego releasu. W tym czasie Survivalcraft, ktory de facto nie jest tak długo na rynku miał już cztery aktualizację. I gdzie tu logika?
Użyteczne rozszerzenia 2/n!
W dzisiejszej części proste przełączanie widoczności UIElement w Silverlight:
// metoda
public static void ToggleVisibility(this UIElement uie)
{
uie.Visibility = (uie.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible);
}
// sposób użycia
Button.ToggleVisibility();
WP7 Emulator Skin Switcher
Na blogu Geert van der Cruijsen pojawiło się ciekawe narzędzie do zmieniania skórek emulatora Windows Phone 7. Polecam każdemu komu znudził się wygląd standardowego emulatora albo potrzebuje ładniejsze zrzuty z aplikacji dla klienta.



