17. März 2008

iPhone creativity – Third party background processes

iPhone SDKSeit der Vorstellung des iPhone SDKs am 6. März (Apple March 6 Event) überschlugen sich die Berichte über die als Beta zur Verfügung gestellte Entwicklungsumgebung. Anfangs euphorisch und im späteren Verlauf immer nüchterner betrachtet (iPhone SDK And Restrictions: Some Of The Details Aren’t Great., Daring Fireball: The Flip Side of the Multitasking Argument, Daring Fireball: One App at a Time). Zu letzterem Blick verhalf auch eine durchaus nachvollziehbare Restriktion: Es können keine Programme von Dritt-Anbietern als Hintergrundprozess laufen. Hierzu möchte ich einige Lösungsansätze beisteuern.

english

After reading lots of complaints about the iPhone SDK on the net I want to squash the lethargy of it a little bit. Some articles list the restrictions (iPhone SDK And Restrictions: Some Of The Details Aren’t Great.) and others the reasons (Daring Fireball: The Flip Side of the Multitasking Argument, Daring Fireball: One App at a Time).
Qualified thoughts on the limitations of the iPhone SDK are stated here: furbo.org · Brain surgeons.

The english part continues further down below, click here to leap.

 

Einen sehr guten Einblick in die Entscheidung, keine Hintergrundprozesse zu erlauben gibt folgender Beitrag eines iPhone Entwicklers furbo.org · Brain surgeons.

Ich kenne kein Symbian[1] Programm (geschweige denn Windows Mobile) mit der Ästhetik und Funktionalität einer iPhone Applikation. Funktionalität bezieht sich hierbei nicht auf den Umfang sondern vielmehr auf die Reduktion auf das Wesentliche (zum Beispiel Safari’s Neuladen und Stop Schaltfläche). Ästhetik folgt auch mehr der Devise dem Benutzer etwas zu vermitteln (zum Beispiel das Ende einer Liste) als nur einfach sinnlos etwas zu zeigen.
Beachtet werden sollte ebenfalls der Umstand, daß es sich bei dem SDK um eine beta Version handelt und trotzdem erweckt es den Eindruck das es um Jahre der Konkurrenz voraus ist.

Aus der Sicht eines Gestalters zwängt sich mir die Impression auf, daß die iPhone Experten nicht selber Innovativ sein möchten oder gar können. Sie betrachten alles aus der Sicht einer Verschwenderischen und sich nicht um die Ressourcen kümmernden Perspektive. So wie Applikationen auf dem Computer seit den Jahren des Megaherz-Wahns geschrieben werden, sollte es auch auf dem iPhone gehen. Kreativität bedeutet für mich, die Fähigkeit aus den vorhandenen Mitteln Innovation zu generieren. Wenn die vorhandenen Mittel einer Innovation bedürfen, dann hat das die oberste Priorität.
Bezogen auf das iPhone SDK sind wir von Apple abhängig und müssen so lange sie das SDK[2] nicht verändern damit zurande kommen.

Liebe Experten quengelt doch nicht wie ein fünf jähriges Kind wem das Dreirad weggenommen wird und das jetzt Fahrrad fahren lernen soll. Stellt euch nur die bequemen oder nicht so geistreichen Entwickler vor dessen Applikationen nahezu alle Ressourcen des iPhones einverleiben und eure Applikation parallel dazu laufen (ähm, schleichen). Falls noch genügend Saft im Akku ist.

Kreativität ist gefragt um die Beschränkung, nur eine Applikation wird ausgeführt, zu umgehen.
chat conversationEin Programm zum Schnattern[3] (Instant Messaging) wird oft als Beispiel herangeführt, welches einen Hintergrund Prozeß benötigt.
Während einer Unterhaltung mit einem Bekannten klingelt das Telephon. Auf dem iPhone muß die Applikation beendet werden um den Anruf entgegen nehmen zu können. Folglich bin ich nicht mehr in der Lage zu chatten (Da ich den Hörer am Ohr habe und das Programm beendet wurde). Das Problem hierbei ist nicht die geschlossene Anwendung oder das ich telephoniere, vielmehr ist das Problem, daß der ehemalige Schwätzpartner (buddy) keinen blassen Schimmer hat warum ich plötzlich weg (offline) bin. Es ist offensichtlich (zumindest für mich), daß das Schnatter Programm bevor es sich beendet meinen Status für die anderen auf Abwesend oder telephoniere gerade setzt. Die Verbindung zwischen den beiden (chat) Parteien läuft in der Regel über einen Server, der die Übermittlung und Benachrichtigung gewährleistet. Folglich sollte dies kein Problem darstellen.
Nach Beendigung des Telephonats und erneutem starten des Schnatter Programms wird mein Status zurück auf Anwesend (online) gesetzt. Alle Nachrichten, die seit der Beendigung durch das Telephonat angefallen waren wurden vom Server zwischengespeichert (offline message) und nun übermittelt.

Was geschieht wenn nach dem Telephonat nicht das Schnattern wieder aufgenommen wird?
Dem Server wurde mitgeteilt, daß die Konversation vormals von einem iPhone aus abgehalten wurde und ändert nach einer Karenz[4] von beispielsweise 30 Minuten den Status von Abwesend auf Nicht Verbunden (offline). Wird die Applikation manuell beendet ändert sich der Status direkt auf Nicht Verbunden (offline). Ist die Beendigung allerdings aufgrund eines Programmwechsels (Aufruf einer anderen Applikation) verursacht worden wird der Status auf Abwesend gesetzt mit einer Karenz von 30 Minuten, nach der der Status vom Server auf Nicht Verbunden (offline) gesetzt wird.

Ein weiteres Beispiel: Mein Schwätzpartner (buddy) übermittelt mit eine URL[5]. Beim berühren der Adresse schließt sich das Chat Programm (ändert meinen Status auf Abwesend oder surfing Safari) und öffnet diese im mobile Safari. Natürlich schwätze ich nicht mehr, ich betrachte mir die Internetseite. Was rechtfertigt also die große Aufregung über den Mangel eines Hintergrund Prozesses? Ich kann gar nicht schnattern, ich surfe gerade im Netz. Wenn ich dann mit dem Betrachten der Seite fertig bin und zum vormaligen Schnattern zurück komme ändert sich mein Status auf Verbunden und ich setze die Unterhaltung fort (und erhalte alle in der Zwischenzeit an mich gesendeten Mitteilungen).

Das Problem auf das die Aufmerksamkeit, im Gegensatz zu Hintergrund Prozessen, gelenkt werden sollte ist die Implementierung des augenblicklichen Startens und der Beendigung der Applikation. Der Benutzer sollte nie den Eindruck haben, er hätte ein Programm beendet beim Wechsel zu einem anderen.

Abschließend möchte ich noch einmal die Aussage hervorheben: Kreativität ist die Fähigkeit aus den vorhandenen Mitteln Innovation zu generieren.
Experten, Programmierer und Goldgräber, bitte nutzt die Gelegenheit schlechte Gewohnheiten über Bord zu werfen und der Paradigmen Paralyse zu entkommen. Schreibt effizienten Kode und verschwendet keine Ressourcen.
Aktualisiert die APIs[6] (im Falle der oben erwähnten Funktionen für das Instant Messaging) oder eure Werkzeuge.

 
english

Show me one single Symbian[7] application with half of the functionality and appealing of apps on the iPhone (not to mention Windows mobile). Functionality in this case is not quantity of functions it means the ease of use (access to functions, reducing functions to a minimum, resolving redundancies (e.g. safari reload and stop button) and so forth).
And don’t forget it’s still a beta and in this state nevertheless seems to come from a decade in the future.

From a designers perspective I get the impression, that the (iPhone) experts don’t want (or are able) to innovate on their own. Instead they are looking at creating things in the old way and (one part) insists on requiring to run background processes. Creativity for me is the ability to innovate with the given tools. If the tools have to be innovated first then creating the tools is priority number one.
In the case with the iPhone SDK one has to live with the given tools as long as Apple redesign them.

Please experts don’t moan like five year old children for not getting the biggest lollipop. Maybe a small lollipop is more comfortable (to suck) and sweeter too. Don’t you remember, bigger is not always better.
Imagine all those lazy or not so bright application programmers whose apps claim most of the resources of the iPhone and your app running parallel is then as snappy as a sloth (or the batteries run out of juice in few hours).

Creativity is needed to solve the limitation of not running a background process.
For example, an instant messaging client seems to need to run a background process for various reasons. You chat with a buddy and a phone call comes in. On the iPhone the app has to quit to answer the call. So I’m not able to continue chatting (as I’m on the phone and the IM app is closed). The problem is not that the chat app is closed nor that I’m on the phone. It’s the fact that the buddy I was chatting with have not the foggiest idea why I went off-line. It’s absolutely obvious (at least for me) that the IM app before quitting sets the status of my buddy(icon) to away or on the phone. The communication is always via a server which handles all the notifications and changes and thus this should be no problem.
As I end the call and start the chat client again, my status gets back to online and all messages which were send since the call are cached by the server (off-line message) and received by my client now.

But what if I don’t start the IM client for the next hours?
The IM server noticed that I was chatting from an iPhone and changes my away status to off-line after let’s say 30 minutes. So if I quit the IM client manually the status is off-line. If an application switch quits the app the status is away with a time out of 30 minutes after that it is set to off-line (by the server, not the client).

chat with URL

Another IM example; during a chat a buddy sends me a URL[8] and I click (erm, touch) it. The chat client quits (set my status to away or surfin’ safari) and opens the link in mobile safari. Of course I’m no longer chatting, I’m watching the site. So what’s the big deal of needing to run the chat client as a background process? I can’t chat I’m surfing the web right now. As I finished reading the contents of the site and get back to the chat my status changes to online and I continue chatting (and receiving all off-line messages).

The problem to focus on, as Apple already mentions it in their iPhone Developer Documentation, is to make the starting and quitting process of the app as fast as possible. Prioritise! (…when getting back to a chat; first the UI, then the stored Data, then receiving the changed Data, changing status et cetera. You know it better than me.)
The user don’t ever get the idea of having quitted the app when he switched to another program. Additionally the buddy on the other end noticed what was going on.

To close this article I want to emphasise on the statement: Creativity is the ability to innovate with the given tools.
Experts, programers and 49ers[9] please jump at the chance to get rid of bad habits and paradigm paralysis. Code efficiently, don’t squander resources.
Update the APIs[10] (in terms of the need for IM features mentioned above) or your tools.


Fußnoten:

  1. Symbian OS ist ein proprietäres Betriebssystem für mobile Geräte WP Link: Symbian []
  2. Software Development Kit im Deutschen auch als Entwicklungsumgebung bezeichnet. WP Link: SDK []
  3. umg. scherzh. plappern, schwatzen: die kleinen Mädchen lachten und schnatterten den ganzen Tag. []
  4. Karenz, die; -, -en (lat.) Wartezeit: um einige Tage K. bitten []
  5. Uniform Resource Locator; umgangssprachlich kann es auch als Webadresse bezeichnet werden. WP Link: URL []
  6. engl. für application programming interface, deutsch: „Schnittstelle zur Anwendungsprogrammierung“) eine Schnittstelle, die von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird. WP Link: API []
  7. Symbian OS is a proprietary operating system, designed for mobile devices. WP link: Symbian []
  8. Uniform Resource Locator; gererally speaking a web address. WP link: URL []
  9. Miners who took part in the California gold rush of 1849. WP link: 49er []
  10. An application programming interface (API) is a source code interface that an operating system or library provides to support requests for services to be made of it by computer programs. WP link: API []
postseparator

2 Kommentare zu „iPhone creativity – Third party background processes”

  1. 1 Bernd

    04. Februar 2009 um 11:06

    Es gibt einige Fälle in denen ein Hintergrundprozess Sinn macht. Das ist z.B. ein Programm dass einen GPS Track aufnimmt während des Joggens. Das macht auf Sinn während der Browser läuft oder ein Chat Programm aktiv ist.

    Wenn der Benutzer lieber die Akkulaufzeit optimieren möchte, kann er gerne auf ein Programm dieser Art verzichten, aber es sollte wenigstens für einen Entwickler möglich sein eins anzubieten.

    Wenn ich mich richtig erinnere darf z.B. der Music Player im Hintergrund weiterlaufen, aber das ist ja Apple selber. Die wissen ja was sie tun, oder?

  2. 2 Michael

    18. Mai 2014 um 02:13

    Glad I’ve finally found somenhitg I agree with!

Kommentar abgeben:


Alle Stichworte

 (6)  (1)  (2)  (5)  (1)  (1)  (2)  (2)  (1)  (1)  (3)  (1)  (1)