Interview mit Patric Schouler (SDX AG)

Was Entwickler über Windows Phone 7 wissen sollten
Kommentare

Microsoft möchte mit Windows Phone 7 möglichst viele Entwickler aus dem Silverlight-Umfeld für seine mobile Plattform einbinden. Doch was sollten Entwickler bei Windows Phone 7 beachten? Patric Schouler gibt in einem Interview einen Einblick in die Arbeit mit Windows Phone 7.

Was sind Ihrer Ansicht nach die größten Herausforderungen, vor die ein Entwickler mit Windows Phone 7 gestellt wird?

Für den Entwickler einer Windows Phone 7 App ist aus meiner Sicht die größte Herausforderung die fehlende Hintergrundverarbeitung von nicht nativen Apps und sein Umgang damit. Dieser Umstand führt dazu, dass man bei seiner App jederzeit damit rechnen muss, dass sie vom Benutzer verlassen wird (z.B. zum Nachschauen einer Seite im Internet Explorer) und nach Rückkehr über die Back-Navigation wieder an die Ausgangsstelle mit allen zuvor erfassten Daten zurückkehren möchte. Dies macht es nötig, dass man sich als Entwickler den aktuellen Zustand seiner App merkt und nach Rückkehren in die App – dies ist in der Regel eine komplett neue Instanz der App – den alten Zustand wiederherstellt. Dieses Verfahren wird auch als Tombstoning bezeichnet. Hier muss man als Entwickler an vielfältige Sachen wie beispielsweise Sicherung der Daten in Eingabefeldern, Wiederherstellen der Scrollbar-Position in Listen usw. denken. Zur Realisierung des Tombstoning erhält man zwar vom Silverlight für Windows Phone eine gute Unterstützung, muss aber trotzdem die eine oder andere Hürde meistern. Dies erklärt auch, warum viele der zurzeit im Marketplace vorhandenen Apps dieses „smarte Multitasking“ nur unzureichend umgesetzt haben, was für Benutzer etwas frustrierend ist.

Microsoft hat dieses Defizit aber erkannt und arbeitet daran in einer der nächsten Versionen hier eine bessere Lösung zur Verfügung zu stellen.

Was müssen Entwickler beachten, wenn Sie ihre Apps in den Microsoft Marketplace stellen möchten?

Für das Einstellen der eigenen App in den Marketplace sollte man zunächst wissen, dass man für die Erlangung des Marketplace Accounts etwas Zeit einplanen sollte. Da der Marketplace in den USA gehostet wird, ist es erforderlich, diverse Formulare auszufüllen und eine vom Einwohnermeldeamt beglaubigte Kopie des Passes oder des Personalausweises verfügbar zu haben. Wichtig hierbei ist es, auch das Formular zur Aussetzung der US-Steuer auszufüllen, sonst sind gleich 30% der Einnahmen weg und das deutsche Finanzamt schlägt auch noch mal zu. Microsoft Deutschland arbeitet aber gerade daran, dass dieses Verfahren für Bundesbürger vereinfacht wird.

Hat man diese Hürde erst einmal genommen, besitzt man nun einen Marketplace-Account (Live-ID mit Sonderfunktionen) und kann somit seine App in den Marketplace stellen und auch ein Windows Phone 7 als Entwicklergerät freischalten. Hierdurch kann man dann seine App nicht nur im Emulator testen / debuggen, sondern dies auch auf einem echten Gerät tun – was sehr empfehlenswert ist, da sich gerade hinsichtlich des Performanceverhaltens der Emulator und ein echtes Gerät gewaltig unterscheiden. Ein weiterer Grund für die Notwendigkeit eines echten Geräts für Entwicklungszwecke ist u.a. auch, dass das GPS und der Beschleunigungs-sensor im Emulator nicht unterstützt werden.

Microsoft führt nach dem Einstellen der App in den Marketplace einen Zertifizierungstest durch, der in der Regel in 5 Arbeitstagen abgeschlossen ist. Auf was sollte man daher bei der Entwicklung einer App achten? In erster Linie ist hier die Limitierung der maximalen Speicherbenutzungsgrenze von 90 MB zu nennen. Eine weitere Empfehlung ist es, die Code Analysis-Funktionen (FxCop) des Visual Studios zu nutzen, um Schwachstellen des Codes zu finden. Gewisse Regeln, wie zum Beispiel der Aufruf von nativem Code mittels PInvoke oder ComInterop-Aufrufe verhindern sogar die Zertifizierung. Erwähnenswert ist vielleicht noch, dass man das Design seiner App zwar am Metro-Style von Windows Phone 7 anlehnen sollte, dies aber nicht zwingend ist. Die Zertifizierungsregeln sind im Übrigen in einem Dokument „Windows Phone 7 Application Certification Requirements“ sehr gut beschrieben und können unter http://create.msdn.com/de-DE herunter geladen werden.

Hat man seine App dann im Marketplace eingestellt, kann man den Status des Publishing-Prozesses im App Hub über den oben genannten Link bequem verfolgen. Ist die App dann freigegeben, kann das Geldverdienen beginnen. In diesem Zusammenhang ist es noch wichtig zu erwähnen, dass man für kostenpflichtige Apps nicht eine separate kostenlose Demoversion entwickeln und in den Marketplace stellen muss (wie es z.B. beim iPhone üblich ist). Jede App im Marketplace kann als Trial- und Normalversion herunterladen werden. Als Entwickler kann man durch Abfrage der IsTrial-Eigenschaft in der Klasse LicenseInformation einfach bestimmte Funktionen für eine Demoversion sperren.

Microsoft setzt bei seiner mobilen Strategie stark auf Cloud Computing. Was bedeutet das für den Entwickler?

Da ich in der SDX AG unter anderem auch im Kompetenzfeld Cloud Computing aktiv bin, kann ich nur bestätigen, dass Microsoft auch im mobilen Bereich Cloud Computing sehr stark fokussiert. Für den Entwickler einer mobilen App stellt sich dann natürlich die Herausforderung bei den gegebenen Restriktionen von limitierter CPU/GPU-Leistung und verfügbarem Hauptspeicher mit großen Datenmengen umzugehen und diese mit einer ansprechenden Usability anzuzeigen.

Was haben Entwickler bei der Datenvirtualisierung zu beachten?

Bei Windows Phone 7 wird man hier unter anderem durch die Datenvirtualisierungs-Mechanismen des ListBox-Controls unterstützt. So kann man zum Beispiel in einer News-Übersicht zunächst die Titel der News laden und die restlichen Informationen, wie News-Bild und News-Zusammenfassung über Lazy-Loading-Mechanismen nachladen. Für den Benutzer ermöglicht man hierdurch schon während des Ladens der News-Artikel ein flüssiges Blättern in der Artikelliste. Ein weiterer wünschenswerter Nebeneffekt bei der Nutzung der Datenvirtualisierungs-Methoden für Windows Phone 7 ist die Minimierung des allokierten Hauptspeichers, was gerade bei langen Listen sonst zu einem Zertifizierungsproblem (90 MB Memory-Peak) werden könnte.

Da man mittels der dem Windows Phone 7 zugrunde liegenden Silverlight-Technologie auf Basis des ListBox-Controls durch die XAML-Definition wiederum andere Controls aufbauen kann, stehen einem diese Vorteile somit nicht nur in Listen, sondern beispielsweise auch in gruppierten Listen und Thumbnail-Übersichten („Grid“) zur Verfügung.

Natürlich gibt es bei der Datenvirtualisierung für Windows Phone 7 auch einige Fallen, in die man tappen kann. So kann es zum Beispiel passieren, dass man durch Verwendung einiger Controls als ListBox-ItemTemplate die Datenvirtualisierung aushebelt und mit Leichtigkeit mit einer einfachen Liste die 10 MB-Marke sprengt.

Welche Unterschiede zu andern Plattformen bestehen, was die Sensorenansteuerung anbelangt bei WP7. Kann die API der Kamera wirklich von einer App ohne Probleme angesteuert werden?

Unter Windows Phone 7 werden alle Sensoren über sehr mächtige Klassen gekapselt, die auf einfache Art und Weise über standardmäßigen C#-Code angesprochen werden können. Der teilweise sehr umfangreiche und komplexe Umgang mit API-Calls, wie bei anderen Plattformen, entfällt daher komplett. Zusätzlich ermöglicht Microsoft unter Windows Phone 7 dem Entwickler aber auch noch den Zugriff auf eine Vielzahl von weiteren Funktionen der Windows Phone 7 Hubs. Gerade diese Integrationsmöglichkeit, wie z.B. das Einklinken der eigenen App in das Kontextmenü Versenden der Picture Gallery, ist aus meiner Sicht einer der großen Pluspunkte von Windows Phone 7. Das Mittel zur Nutzung der Funktionen aus den Hubs sind die sogenannten Launcher- und Chooser-Tasks. Ein Launcher-Task dient dabei dazu eine bestimmte Funktion auszulösen (z.B. einen Telefonanruf starten), ein Chooser-Task liefert zusätzlich ein Ergebnis zurück, z.B. ein Bild aus der Gallery auswählen.

Das nachfolgende Beispiel zeigt, wie man mit sehr wenigen Zeilen Code den Kamera-Chooser-Task aufrufen und das gemachte Foto dann in seiner App anzeigen kann:

var cct = new  CameraCaptureTask();
cct.Completed += CameraChooserCompleted;
cct.Show();

void CameraChooserCompleted(object sender,  PhotoResult e)
{
   var bmp = new BitmapImage();
   bmp.SetSource(e.ChosenPhoto);
   _image.Source = bmp;
}  

Fazit:

Insgesamt kann man sagen, dass die Entwicklung dank Silverlight sehr locker von der Hand geht, insbesondere wenn bereits über Silverlight Kenntnisse verfügt. Gleichzeitig muss man aber darauf hinweisen, das Silverlight für Windows Phone 7 zu einer Vielzahl von erweiterten Möglichkeiten auch einige Einschränkungen zu Silverlight/Client aufweist. Entwickler sind also gut beraten, sich in den einschlägigen Blogs auf dem Laufenden zu halten und nicht zu blauäugig an das Thema ranzugehen.

Patric Schouler ist Chief eXpert bei der SDX AG und ist dort im Bereich Custom Web-Development im Einsatz. Er war zuletzt bei einem großen Carrier an der Entwicklung der Windows Phone 7 Apps zur Markteinführung beteiligt und verfügt daher in diesem Bereich über ein breites praktisches Wissen. Sein technischer Blog mit vielen Hinweisen und Tricks zur Windows Phone 7 Entwicklung ist unter http://dotnet-redzone.blogspot.com erreichbar.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -