Jak obejść ograniczenia Sklepu Windows Phone?
Każdy z producentów ma własne unikalne aplikacje w sklepie Windows Phone, co więcej, ograniczone często do konkretnych modeli urządzeń (np. Nokia Pro Cam ograniczona do modeli 92x i 1020). Zatem teoretycznie nie zainstalujemy aplikacji od Noki na HTC i na odwrót, także dedykowanej aplikacji do zdjęć dla Lumii 920 nie pobierzmy na Lumię 820. Okazuje się jednak, że można to w prosty sposób obejść, bez magicznej wiedzy.
Przygotowania do pracy
Aby móc działać w jakikolwiek sposób, należy pobrać program Fiddler. Dzięki tej aplikacji będziemy w stanie monitorować ruch jaki generuje nasze urządzenie z Windows Phone. Kiedy już zainstalujemy Fiddlera, czas na konfigurację:
[list] [item]Musimy sprawdzić nasze IP, na którym zainstalowany jest Fiddler. Najszybciej wykonamy to z linii poleceń. Skrótem Windows+R otwieramy okno Uruchamianie, wpisujemy w nim cmd, aby uruchomić linię poleceń. Wpisujemy komendę ipconfig i sprawdzamy nasz adres IP.
[/item][item]Komputer, na którym jest Fiddler, pełnić będzie rolę proxy. Zatem ustawmy w Windows Phone odpowiednie opcje. Połączmy się z sieci WiFi (w której już jest obecny komputer z Fiddlerem) i poprzez przytrzymanie palca na nazwie sieci, dodajmy proxy.
Adres IP ustawimy taki, jaki jest na komputerze z Fiddlerem, zaś nr portu wpisujemy: 8888 (domyślnie dla Fiddlera).
[/item][item]Czas na uruchomienie Fiddlera. W menu opcji Tools->Fiddler Options... w zakładce Connections, zaznaczyć należy Allow remote computers to conect.
[/item] [/list]
Analiza podglądu
Już na tym etapie wszelki ruch sieciowy wykonywany z poziomu telefonu, powinien być wychwytywany przez Fiddlera (jeśli tak nie jest, sprawdź czy opcja File->Capture Traffic jest zaznaczona). Warto teraz wyczyścić okno Fiddlera (ikona krzyżyka i wybieramy Remove all).
Wejdźmy na urządzeniu z Windows Phone do Sklepu i wybierzmy jakąś aplikację do wyświetlenia. W oknie Fiddlera pojawi się m.in. log z hostem marketplaceedgeservice.windowsphone.com. Jest to link, który został wysłany ze smartofnu do Sklepu. Zobaczmy jak wygląda taki przykładowy adres:
http://marketplaceedgeservice.windowsphone.com/v8/catalog/apps/9c3e8cad-6702-4842-8f61-b8b33cc9caf1?os=8.0.10211.0&cc=PL&oc=&lang=pl-PL&hw=50700000&dm=RM-825_eu_poland_295&oemId=NOKIA&moId=&cf=00-0
Szybko zauważymy:
- ID aplikacji (to ten długi GUID).
- Wersję systemu urządzenia - znacznik os
- Język i region - znacznik cc i lang
- Wersję sprzętu - znacznik hw
- Wersja firmwareu (określa model urządzenia i operatora) - znacznik dm
- Producent/OEM - znacznik oemId
Oczywiście to nie wszystkie parametry, jakie są wysyłane, ale te które na daną chwilę mogę się nam przydać.
Jak podmienić wartości?
Wiemy już jak wygląda link do Sklepu i co w nim jest przesyłane. Jak teraz w locie podmienić wartości na takie, jakie zechcemy ustawić? Użyjemy tu Fiddlera. Można to osiągnąć w dwojaki sposób. Z poziomu GUI (zakładka AutoResponder i ustawienie reguł) lub w skrypcie. Opcja pierwsza jest najprostsza, ale najmniej uniwersalna i konfigurowalna, druga zaś ma większe możliwości i nią się właśnie zajmiemy:
[list] [item]Skrótem Ctrl+R otwieramy plik z regułami dla Fiddlera.[/item][item]Znajdujemy linijkę: [code=c#]static function OnBeforeRequest(oSession: Session) {[/code] [/item][item]za tą linijką wklejamy kod:
[code=c#]if(oSession.uriContains("_ORG")) { oSession.url = oSession.url.Replace("_ORG"","_ZMIANA"); }[/code]
Powyższy kod sprawdza, czy w url znajduje się szukany ciąg, jeśli tak jest, podmienia go.
_ORG jest szukanym elementem w stringu, _ZMIANA to wartość na jaką chcemy zamienić.
[/item][item]Po edycji zapisujemy plik.[/item][/list]
Wykorzystanie
Znamy wygląd url wysyłanego do Sklepu oraz z czego się składa, teraz przyszedł czas na kilka przykładów wykorzystania tej wiedzy.
Pobieranie aplikacji OEM od innego producenta, niż producent urządzenia
Sprawa jest prosta. Posiadamy np. Lumię od Nokii, a chcemy pobrać aplikację Photo Enhancer, która dedykowana jest tylko dla urządzeń od HTC. Naszym celem jest podmiana producenta OEM, jaki jest doklejany do url. Oto co należy zrobić:
[list] [item]Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy[/item][item]W kodzie z punktu Jak podmienić wartości? ustawiamy:
- _ORG - NOKIA
- _ZMIANA - HTC
[/item][item]Wchodzimy bezpośrednio do Sklepu z linku: Photo Enhancer [/item][item] Otwiera się okno Sklepu...
... i instalujemy aplikację. [/item][/list]
Dla ułatwienia podaję listę z linkami aplikacji od konkretnych producentów:
Instalacja aplikacji dostępnych tylko dla określonych urządzeń
Na pewno wszyscy kojarzą aplikację Nokia Pro Cam, która wraz z aktualizacją Amber, została udostępniona tylko dla urządzeń Lumia z serii 92x oraz 1020. Nic nie stoi jednak na przeszkodzie, aby pobrać Nokia Pro Cam np. na Lumię 820. W tym celu, podmienimy model urządzenia, jaki przesyłany jest w url. Poszczególne etapy wyglądają następująco:
[list] [item]Wykonać wszystkie kroki opisane w punkcie Przygotowania do pracy[/item][item]Zapisujemy nazwę firmwareu urządzenia. Można to zrobić poprzez analizę linka wysyłanego do Sklepu lub prościej, w opcjach: Ustawienia->info+dodatki, klikamy na więcej i spisujemy nazwę z pola Manufacturer Name.[/item][item]W kodzie z punktu Jak podmienić wartości? ustawiamy:
- _ORG - nazwa_z_manufacturer_name
- _ZMIANA - RM-877_nam_att_205 (będziemy przestawiać się jako Lumia 1020 od ATT)
[/item][item]Wchodzimy bezpośrednio do Sklepu z linku: Nokia Pro Cam [/item][item] Otwiera się okno Sklepu...
... i instalujemy aplikację. [/item][/list]
Kilka uwag
W ten sposób mamy dostęp do wszelakich aplikacji umieszczonych w Sklepie Windows Phone. Na koniec kilka uwag i porad:
- Niektóre aplikacje (jak Hub od HTC z zegarkiem w kafelku) wymagają dodatkowych sterowników/plików, stąd nie będą w pełni funkcjonalne na innych, niż dedykowane urządzenia.
- W ten sposób można również mieć dostęp do aplikacji ograniczonych przez region/język. Wówczas należy ustawić proxy na zagraniczne (może być niebezpieczne!).
- Internet Explorer i Sklep na Windows Phone posiadają cache z wynikami zwracanymi z serwera, stąd podmiana nie zawsze będzie natychmiast widoczna.
- W edytowany pliku w Fiddlerze można dodawać własny kod w C#.
- Pamiętajmy, aby wyłączyć proxy po zakończonej pracy!
Miłego grzebania! :)