Blog

APT 5: GIT? Wie geht DIT?

Ein Xcode Projekt unter GIT-Versions-Verwaltung stellen:

Geht am einfachsten natürlich indem man beim erzeugen mit Xcode Version 4.x schon angibt, mit Git verwalten zu wollen. Wenn man das vergessen hat, oder noch mit Xcode 3.x arbeitet kann man es mit diesen Kommandos machen:
$ cd project
$ git init
$ git add .
$ git commit [-m commit-message-text]

Nun ist alles unter Versions-Kontrolle – in der lokalen Directory !
TiPP: Damit man nicht den voreingestellten Editor bei Commit aufgerufen bekommt (bei mir ist es vi) kann man -m und die Message sagen. Vi TiPP: MitZZ (zweimal groß Z) kommt man aus dem vi wieder raus.

Das Beste ist jetzt: Wenn man das Projekt jetzt unter Xcode-4 öffnet, dann merkt Xcode gleich, dass das Projekt unter GIt-Versionsverwaltung ist.

Wie bekommt man das Projekt auf bitbucket hochgeladen?

$ git remote add origin https://<user>@bitbucket.org/<user>/<repository.git>
$ git push -u origin –all
$ git push -u origin –tags        # nur, wenn man auch tags hatte

also z.B.:
$  git remote add origin https://Small_Apps@bitbucket.org/Small_Apps/blabla.git

Wie bekommt man das Projekt auf einen lokalen Server hochgeladen?
1.) alle eigenen Änderungen speichern, testen, mit commit im Projekt abspeichern, noch mal übersetzten und noch mal testen
2.) eine Lokale Kopie des Projektes anlegen, allerdings als Server-Version:
$ # wir sind im Projekt-Directory mit Namen proj
$ cd ..
$ git clone –bare proj proj.git

Damit legen wir eine Kopie an, allerdings nur die Versionsbaum-Variante, ohne die Working-Versionen der Dateien (daher „–bare“). Es hat sichals server-name eingebürgert, daher bitte auch bei uns einhalten.

Nun kann man die Directory proj.git auf den Server verschieben oder kopieren (lassen). Etwa mit

$ mv proj.git /Volumes/Backup/Git/proj.git

Fertig!

Natürlich kann man das auch mit

$ git clone –bare proj /Volumes/Backup/Git/proj.git

sofort erledigen, aber das war jetzt sowieso allen klar.

Eine lokale Kopie des Projektes vom Server anlegen geht so:

In Xcode (Version 4.x) den Organizer aufrufen, in der Mitte oben auf den Reiter „Repositories“ gehen und dann links unten auf den Plus-Button und dann auf „Checkout or Clone Repository…“ klicken. Bei dem dann erscheinenden Dialog gibt man den Pfadnamen des Servers ein – bei uns also das bekannte

/Volumes/Backup/Git/proj.git

…und schon kann man mit den Sourcen arbeiten.

Die Änderungen auch auf den Server „hoch“-spielen:

$ cd proj
$ git push /Volumes/Backup/Git/proj.git

Die Änderungen vom Server herunter-Kopieren geht dementsprechend mit:

$ cd proj
$ git pull /Volumes/Backup/Git/proj.git

ich hoffe, ich habe nichts vergessen.

E10-Liste

Kann mein Auto E10 tanken?
Darf dieser Mietwagen E10 tanken?
Wo genau finde ich auf der Webseite des Herstellers die Informationen?
Diese Fragen beantwortet die E10-Liste, die wir (bzw. unser Student Leonard) für Sie aus dem Internet zusammengestellt haben.

Übrigens: Wir haben nicht die DAT-Liste kopiert, sondern Webseite für Webseite das Netz abgesucht, daher sind unsere Links auch immer korrekt.

Auf die Frage, was sei besser für die Umwelt, E10 oder das normale Super-Benzin, antwortet unser Student Nicolas immer: Fahrrad fahren und öffentlichen Nahverkehr benutzen. Aber das wussten Sie schon ohne unsere App.

Viel Spaß mit der Liste.

Technologietag Teltow 2011

Nicht jeder ist vom Technologietag Teltow so begeistert wie wir.

 

 

 

 

Gute Güte!

Wie kann man unter völliger Missachtung aller Marketing-Regeln auf eine Messe gehen und trotzdem das Gefühl haben, dass es ein Erfolg war? Was ich meine, sieht man hier rechts auf dem Foto: Keine Aufsteller, kein leicht lesbares Plakat, nur zwei Leute und ein bisschen Papier und Visitenkarten.

Zur Erklärung: Dieses Jahr waren wir von Small Apps auf dem Technologietag Teltow um uns und unsere Firma zu Präsentieren. Da ein Messeauftritt für so eine kleine Firma ja keine Selbstverständlichkeit ist – wir sind ja mehr Techniker und weniger Sales-Leute, war es als erster Versuch zum Lernen gedacht – irgendwann muss man ja mal anfangen.

Und es war toll: Wir bekamen erstaunlich viel Interesse zu spüren und der eine oder andere Besucher war interessiert an einer Zusammenarbeit. Leider ist unsere Sales-Professionalität noch nicht so hoch, dass auch wirklich aus allen Interessenten ein Projekt werden könnte. Aber wie ich schon sagte: Wir wollten lernen.

Wünscht uns Glück, dass aus den Kontakten, die wir knüpfen konnten, auch wirklich Projekte werden…

TaschenGeld App

Was andere über Taschengeld sagen:

Très simple et efficace — Version 1.0.2, 12.6.11, Moussinho

It’s obvious that the App is written by someone who has kids.
It is easy to use and loggin changes to see, if your kids took your iPhone to change the entries in the lists just to tell you, you forgot to „pay“ them.
I like it. — Version 1.0.2, 25.2.11, H P

Mit Taschengeld App kann ich mit wenigen Klicks vermerken, dass ich meinem Sohn sein Taschengeld gezahlt habe.

Zwei Klicks – Fertig!
Die Taschengeld app löst somit mein Problem, dass ich für das „bezahlt“ eintragen bei Text-Listen immer so viele Klicks benötigte, dass ich es nach einiger Zeit aus Faulheit nicht mehr getan habe.
In Taschengeld App braucht man aber nur zwei (2) Klicks, bis das Taschengeld eingetragen ist: Einen, um das Kind auszuwählen, einen um den Betrag als bezahlt zu vermerken. Daher werde ich es immer schaffen, das Taschengeld-Zahlen einzutragen, den Überblick zu behalten, und zu wissen, ob ich jetzt wirklich vergessen habe Taschengeld zu zahlen, oder meine Kinder nur vergesslicher sind als ich.

Sicherheit ohne Passwort
„Aber wenn man kein Passwort eintippt, dann ist doch alles von den Kindern änderbar“, höre ich Euch sagen. Nun ja, daran haben wir gedacht: Jede Änderung wird protokolliert und eine kurze Überprüfung des Protokolls stellt sicher, dass kein „Bengel“ an den Einstellungen „verbessert“ hat – und wenn doch, dann wird es eben Rückgängig gemacht – und man lächelt weise und freut sich über die Cleverness der Kinder.

Empfehlungen für Taschengeld
Natürlich haben wir noch einige Empfehlungen für die Verwendung von Taschengeld und eine Taschengeld Tabelle dazu getan. So sind Diskussionen mit den Kindern etwas leichter zu beenden. Meine Erfahrung aus der Kindheit ist übrigens:
Es bekommt immer jemand mehr Taschengeld als ich.

VoiceOver
Natürlich ist die Applikation mit VoiceOver für verbesserte Bedienung sehbehinderter getestet, aber wir nehmen auch gerne Hinweise für Verbesserungen entgegen. Schickt mir einfach eine Mail.
Für die Übersetzungen bedanken wir uns bei:
Karin (ins Französische)
Paloma und Jonathan (ins Spanische)
Danke!

Hier ist der Link zur Taschengeld APP im iTunes APP Store

Neue Würfelbecher Version

Hallo,
Wir haben Würfelbecher in einer verbesserten Version freigegeben – eine Gemeinschaftsproduktion: Holger hatte den ersten Verbesserungswunsch (danke dafür), nämlich die Schüttelstärke änderbar zu machen. Nico hatte dann zwischendurch mal Lust, diese Idee zu implementieren. Ich hatte dann lange keine Zeit, denn ich habe ja an anderen Dingen gearbeitet – unter anderem an der Taschengeld App, siehe hier: Taschengeld App
Als ich nun etwas Zeit hatte, habe ich gleich noch neue Sprachen, einen Würfel mehr und eine verbesserte Zahlenausgabe eingebaut. Und dann habe ich mich einer anderen Idee von Holger erinnert – dass man doch Voice over, die Accessibility Funktion von iOS mit unterstützen könnte. Ich war mir zwar nicht sicher, ob das irgendjemanden interessiert – beim Schummeln die gewürfelten Augenzahlen laut vorgelesen zu bekommen ist ja nicht so clever, es sei denn, man hat Kopfhörer auf, wie ich beim Testen mit Voice over (um die anderen im Büro nicht zu stören).
Aber auch, wenn es keinen interessiert: Die Vorstellung, durch wenig Mehraufwand die Nutzbarkeit für Blinde und sehbehinderte zu verbessern, führte dazu, dass ich mich gut fühlte. Und das ist doch der Grund, warum ich diesen Job mache: Weil es mir Spaß macht und weil ich mich dabei gut fühlen möchte.
Viel Spaß mit Würfelbecher 1.1.0!
Gruß, Thomas

Zusammenfassung der Änderungen in 1.1.0
+ jetzt 1 bis 7 Würfel einstellbar
+ einstellbare Empfindlichkeit für das Schütteln – die Geräte sind leider etwas unterschiedlich empfindlich
+ dadurch ist Würfelbecher jetzt leichter auf dem iPod Touch der 4. Generation zu spielen
+ Unterstützung verschiedener Sprachen
+ Komma Zahlen haben jetzt ein Komma statt einem Punkt
+ leicht verbesserter Schüttelalgorithmus
+ Accessibility Support: Die Würfel Augenzahl wird angesagt, wenn man im VoiceOver Modus auf den Würfel tippt (Schummel-Spiele wie Meiern gehen dann aber nur mit Kopfhörer)

Für die Übersetzungen geht unser Dank an:
Karin (Französisch)
Paloma und Cesar (Spanisch)

Feedback und Sprachverbesserungen sind jederzeit willkommen!

 

APT 4: Und ab in den Store!

Damit meinen Kunden klar ist, dass die Applikation, die angeblich von mir ist, auch wirklich von mir ist, sind sie alle von mir zertifiziert. Das ist nichts au?ergewöhnliches: Jede Applikation, die für das iPhone entwickelt wird, hat ein Zertifikat.

Während der Entwicklung ist es einfach: Man holt sich ein „Team development certificate“ in dem „iOS provisioning portal“, kombiniert das mit den Namen der erlaubten Geräte und Leute und schon kann man loslegen. Das war nicht immer so, aber seit einiger Zeit gibt es ein Development auto provisioning, will sagen: Wenn man eine App geschrieben hat und die auf einem als Develpment Device identifiziertem Gerät laufen lassen will, dann macht Xcode das inzwischen automatisch für einen.

Problematisch ist nur, wenn man den Typen am anderen Ende der Welt die Software testen lassen will: Apple nennt diese art von App Verteilung „Ad hoc“ distribution und man muss extra dafür ein zweites Provisioning Profile erstellen und installieren. Dann kann man dem Tester mit der Applikation zusammen dieses Provisioning Profile schicken und er kann es ein Paar Monate lang testen. Das ist das Interessante daran: Nach ein paar Monaten läuft so ein Profil aus.

Logischerweise will man nicht, dass die App im App Store auch unter so einer Zeitbegrenzung leidet, daher gibt es auch unbegrenzte „distribution“ profiles. Hat man seine App fertig, kann man sie abschicken – zum Beispiel indem man sie in Xcode archiviert und dann von dort aus verschicken lässt. Soweit so gut.

Dabei kann man sich natürlich selber reinlegen. Wenn man die Apple Hinweise nicht Punkt für Punkt einhält, kann es schon mal sein, dass man mit „illegal Binary“ abgewiesen wird. Bei mir war der Fall einfach: Hoppla, hatte aus Versehen das adhoc profil ausgewählt. Korrigiert, erneut abgeschickt und schon war das Binary akzeptiert und bei Apple zum Review.

APT 3: Zahlen und Länder

Wenn ich eine Zahl in einem Dialogfenster darstellen will, ist es oft eine gute Idee, die Zahl schon in die Default Einstellungen des Dialogs (in den .nib bzw. .xib Files) vorzunehmen. Aber was, wenn ich Komma-Zahlen habe? Dann muss ich je nach Landeseinstellungen etwas anderes ausgeben.

Nun darf man die Entscheidung Komma oder Punkt leider nicht von der Sprache abhängig machen, denn die Spanier schreiben mit Komma, die Mexikaner aber mit Punkt. Daher unterscheidet iOS ja auch zwischen der Sprach-Einstellungen und Einstellung der Region.

Und damit das alles gut geht, dafür gibt es in iOS Funktionen. Statt initwithformat: Gibt es auch Initwithformat:locale:, eine Funktion, die netterweise das Komma oder den Punkt richtig setzt.

Damit sind Kommazahlen aber nicht mehr für .xib Files geeignet, denn die will man ja nur sprachspezifisch machen, um Ihre Anzahl nicht zu groß werden zu lassen. Daher behilft man sich, indem man die Zahl in den Xib Files leer lässt und dann beim Laden des Xib-files in viewdidload die Zahl korrekt formatieren.

APT 1: Localization „Bug“

„APT“ soll für „App programmier Tipps“ stehen. Damit sollen diese Artikel leichter von den anderen Beiträgen in diesem Blog unterscheidbar sein. Für den Fall, dass man sie mal alle nacheinander ansehen will.

Nehmen wir mal an, Du hast eine Applikation im Apple Store, die nur in einer Sprache erhältlich ist. Nun steht eine neue Version an und Du freust Dich, dass Du eine feine Übersetzung für Deine Texte hast. Mit wenigen Klicks und Stundenlangem tippen ist es so weit:

und….

Die alten Texte erscheinen immer noch – egal, auf welche Sprache DU umschaltest. Das liegt daran, dass Du den Namen Deiner Ressourcen gleich gelassen hast und in der Bundle Direktory noch die alte, nicht lokalisierte Version rumliegt – und die wird dummerweise zuerst gefunden!
Jetzt gibt es zwei Möglichkeiten:
1.) Die Installation auf Deinem iPhone oder Simulator zu löschen – dann sind die alten Versionen weg.
2.) Wenn löschen keine Lösung ist, weil dann Daten weg sind: Die Resource-Dateien umbenennen. Aber Vorsicht – keine nicht-lokalisierte Version der Datei mit dem neuen Namen ausprobieren, sonst hat man die auch auf dem Gerät.
3.) Als Dritte von zwei Lösungen kann man auch noch dem schönen InitWithNibName die richtige Datei geben. Die bekommt man mit Hilfe des Arrays „PreferredLocalizations“ aus dem Bundle.

NSBundle* bundle = [NSBundle mainBundle];
NSString *nibname =
[NSString stringWithFormat:@“%@.lproj/FlipsideView“, [[bundle preferredLocalizations]objectAtIndex:0]];

Nun ja, da direkt in den Index 0 zu gehen ist nicht die 100% Feine Art, aber da man ja den Pointer den man vom InitwithNibName bekommt überprüft (das macht Ihr doch alle, oder?) kann man das so lassen und im Falle, dass die Datei nicht da ist, noch mal ohne Lokalisation nachfragen.

Laut Dokumentation ist garantiert: Dass Deine Kunden die alte Datei auch gelöscht bekommen. Allerdings: Es gab Leute im Internet, die behaupten, sie hätten dieses Problem nach dem Installieren der neuen Version. Leider kann ich nicht nachprüfen, ob die ein anderes, oder genau dieses Problem haben – Vorsicht ist aber besser als die App zweimal einreichen müssen habe ich mir gedacht und mal eben die dritte Methode implementiert.

Kommentare willkommen!
Gruß, Thomas

P.s.: Nein, von der App aus löschen kann man die Datei nicht – die BUNDLE-Directory ist aus der Sicht der App schreibgeschützt.

Würfelbecher in 11 Ländern!

Unsere Jahresbilanz kann sich sehen lassen: 2010 lief gut !
Wir hatten unter anderem:
Unsere Erste App im App-Store,
unseren ersten App-Auftragskunden,
der dritten Mann kam dazu,
Unser erster Praktikant arbeitet hier.

Unsere Erste App im App store, „Würfelbecher“ haben wir jetzt schon in 11 verschiedene Länder verkauft – zuletzt mit ständig steigenden Umsätzen. Für Neugierige, dies sind die Länder, in denen Würfelbecher gespielt wird, gelistet in der zeitlichen Reihenfolge des Erstkaufs:

Deutschland
Australien
Grossbritannien
Niederlande
Griechenland
Luxemburg
Italien
Spanien
Dänemark
Österreich
Irland

[Update:]
Schweiz
USA
[/Update]