universal car mount with velcro

Today a “Hack”-Report:

I was using iPhone for quite a while, my last Phone was a iPhone4 for last three years. Part of my phone gear is a Navigon cell phone holder which is indeed the same like a Garmin cell phone holder.

As I moved to Samsung Galaxy S5 mini, I wanted to be more flexible, and to use my Phone also on my bike I bought:

SPITZEL – Samsung Galaxy S5 Halterung für das Fahrrad

They are made in Germany.

First impression: very solid!

So as the phone case is now equiped with velcro, I want to use it the same way in the car.

Buying 2 m of velcro is very cheap.

velcroNow use the old cell phone car mount and stick two parts of velcro on the car mount:

velcro stickedAnd now, let’s test it:

test

Very nice, very solid and super flexible, it can still be used with the old iPhone 4 and other cell phones with velcro.

Ergo: universal car mount with velcro for a fair amount of money.

In german: Universal Auto handy halterung mit Klett

Infos zu einer App: Version – Sprache

Eine App für eine breite Kundschaft zu entwickeln bedeutet auch, eine Vielzahl an Variationen von Problemmöglichkeiten zu kreieren. Wenn dann wirklich ein Problem auftritt, möchte man vom Kunden möglichst genau dessen Rahmenbediengungen kennen.

Dazu zählt bei einer iOS App insbesondere:

Quelle:

Welche App hat er genau genutzt?

Version:

Welche Version der App wurde verwendet? Wurde evtl. eine alte Version genutzt und ein reines Update würde helfen?

Sprache:

Welche Sprache ist eingestellt? Kommt das Problem evtl. von einem Übersetzungsfehler / einer fehlenden Übersetzung?

iOS Version:

Apple verhindert zwar recht gut, Funktionen zu verwenden, die in bestimmten iOS Versionen noch nicht oder nicht mehr verfügbar sind, nichts desto trotz, ist es bei Fehlern wichtig, zu wissen, welche iOS Version verwendet wird.

Die meisten der Informationen sind über [[NSBundle mainbundle] infoDictionary] erreichbar:

App Identifier: [[NSBundle mainBundle] infoDictionary] valueForKey:@”CFBundleIdentifier”]
App Version: [[NSBundle mainBundle] infoDictionary] valueForKey:@”CFBundleVersion”]

Die Sprache erhält man über: [[NSUserDefaults standardUserDefaults] objectForKey:@”AppleLanguages”] objectAtIndex:0]

Und zu guter letzt die iOS Version:
[[NSProcessInfo processInfo] operatingSystemVersionString] Hierbei ist darauf zu achten, dass im Simulator als Betriebssystem die OSX Version angegeben wird.

Mit den aufgeführten Angaben lässt sich schon recht genau das technische Umfeld des Nutzers eingrenzen und diese Informationen können automatisch beispielsweise in einer E-Mail angehängt werden.

Dabei bietet es sich an, die ankommenden E-Mails automatisch in ein Ticket System laufen zu lassen um auch keine Meldung zu vergessen. Als praktisch hat sich hierbei die OpenSource Ticket Verwaltung OTRS erwiesen. Auch für den professionellen Einsatz lohnt sich das System, da hinter den Entwicklern eine Firma steckt, die auch professionellen Support anbietet und Unterstützung bei der Umsetzung anbieten kann.

iPhone ADHoc build save to disk problem

Mit XCode können nicht nur Apps an den Apple App Store geschickt werden, registrierte Entwickler können auch an registrierte iOS Devices so genannte ADHoc Builds verteilen.

Dabei wird die Datei vom Ersteller signiert und dann lauffähig. Wie das ganze erledigt werden kann, habe ich in diesem Artikel beschrieben: ios-betabuilder-version-1-5-released. (Der BetaBuilder ist mittlerweile übrigens im MacStore erhältlich).

Was nun wenn es bei dem beschriebenen Vorgehen Probleme gibt? Beispielsweise kann es vorkommen, dass der Organizer bei dem Klick auf “Save to disk” einfach nicht reagiert, ohne Fehlermeldung etc. Ein Blick in die logs mittels:

tail -f /var/log/system.log

bringt ein

header check failed

um Vorschein.

Mögliche Lösungen:

– “Project clean” und neu builden

– XCode neu starten

– Rechner neu starten

– XCode neu installieren, Projekt cleanen, Projekt builden

Welcome Xcode 4

Xcode 4

Xcode 4

Ab heute ist das neue iOS 4.3 für iPhone 4, iPhone 3 GS, iPad und iPad 2 verfügbar. Ersten Hinweisen zu Folge sogar schon für das kommende iPhone 5.

Zusätzlich hat Apple die neue Version der Entwicklungsumgebung Xcode 4 für die breite Öffentlichkeit zugänglich gemacht. War es bisher registrierten (zahlenden) Entwicklern vorbehalten, darf nun jeder die neue Version nutzen. Jeder? Nicht ganz, war Xcode bisher kostenfrei, muss es ab jetzt im MacStore für 3,99 € gekauft werden.

Neuerungen in Xcode4:
Single-Window-Interface
Integrierter Interface Builder
Apple LLVM Compiler 2.0 inklusive Live Issues und Fix-It
Versionseditor (Git)
Neuer Debugger
Instruments for Xcode 4

Sehr schön ist auch das schon verfügbare Shortcut Blatt.

Weitere Artikel zum Thema:
Golem
Macnotes

Icon specified in the Info.plist not found under the top level app wrapper: Icon.png

Kleiner Fehler, große Wirkung, wer beim Submitten einer App an Apple die Fehlermeldung erhält:

Icon specified in the Info.plist not found under the top level app wrapper: Icon.png

Darf sich erstmal freuen, die Fehlermeldung ist schwer zu beheben.

Im einfachsten Fall hat man wirklich vergessen, das Icon.png in das Projekt zu legen. Es ist darauf zu achten, dass das Icon bestimmte Kriterien erfüllen muss (nachzulesen unter: http://developer.apple.com/library/ios/#qa/qa2010/qa1686.html)

Wichtig, die Icon File muss im Root des Projektes liegen und die Groß- und Kleinschreibung muss beachtet werden. Es kann helfen, das Projekt komplett aufzuräumen über:

Build -> Clean All Targets

Zusätzlich kann man nach dem cleanen noch die Icons alle umbenennen z.B. in bIcon.png und dann wieder zurück nach Icon.png benennen. Danach wie gehabt

Build -> Build and archive

An Apple senden

Je nachdem, ob man eine iPad App erstellt gibt es folgende möglichen Icon Variationen die in der Info.plist Datei hinterlegt werden:

  • Icon.png (57×57px – iPhone und iPod Touch)
  • Icon@2x.png (114×114 – iPhone 4 Retina Display)
  • Icon-72.png (72×72 – iPad)
  • Icon-Small.png (29×29 – Settings app und Suchergebnisse auf iPhone und iPod Touch)
  • Icon-Small@2x.png (58×58 – Settings app und Suchergebnisse auf iPhone 4)
  • Icon-Small-50.png (50×50 – Suchergebnisse auf iPad)

 

Paypal iOS SDK

PayPal iphone / iOS SDK

PayPal iphone / iOS SDK

In der aktuellen Diskussion über die Abo-Gebühren von Apple, die inApp Beteiligungen die verlangt werden, geht voll unter das es auch noch andere Bezahlmöglichkeiten gibt.

Unter anderem bietet PayPal ein eigenes iPhone / iOS SDK an.

Dieses kann in jede App eingebunden werden und den Bezahlvorgang für Inhalte übernehmen. Beträge, Rechnungsposten, Steuer / Versandgebühren sind dabei sehr gut einstellbar. Im Fall einer erfolgreichen Zahlung erhält man von PayPal eine PayPal-Transactions-ID, womit der jeder Bezahlvorgang eindeutig ist.

Eingebunden wird das SDK sehr einfach: Downloaden, Add existing Files -> die *.a Datei und alle .h Dateien auswählen und importieren.

In dem Viewcontroller, in dem der Bezahlvorgang dann vonstatten gehen soll folgende include Anweisung:

#import “PayPal.h”

weitere Schritte können in der Doku von Paypal entnommen werden.

Was nicht ind er Dokumentation erwähnt ist: um das SDK nutzen zu können, bedarf es auch einer xml Lib. Wenn diese nicht vorhanden ist, bekommt man Fehlermeldungen im folgenden Stil:

“_xmlNodeListGetString”, referenced from:

-[ap_ReceiverIdentifier deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_Address deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_AddressList deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_CurrencyCodeList deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_CurrencyList deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_CurrencyConversionList deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_CurrencyConversionTable deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_DisplayOptions deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

-[ap_ErrorList deserializeElementsFromNode:] in libPayPalMEP.a(ap.o)

usw.

Dieses kann verhindert werden, indem man die libxml2.dylib als existing Framework einbettet / hinzufügt.

iOS BetaBuilder Version 1.5 released

Das leidige Problem, wie verteile ich meine Entwicklungsstände von neuen Apps an Kunden / Tester / Freunde…

Die Antwort lag meistens in einer kleinen aber feinen Anwendung: BetaBuilder!

Mit diesem Tool wird das Verteilen von Software total einfach. Was man braucht ist ein AdHoc Zertifikat, welches Gültigkeit für alle Geräte besitzt, auf die man die App gerne hätte und Webspace zum verteilen der Software.

Man führt alle bekannten Schritte zur Generierung einer IPA Datei durch. Diese Datei lädt man dann im BetaBuilder und gibt an, unter welcher WebAdresse die App für die Kunden / Freunde / Tester zur Verfügung stehen wird.

Bei früheren Versionen musste diese Adresse jedes mal eingegeben werden, dies geschieht nun automatisch, ein echter Kompfort-Gewinn.

Nach dem Betätigen des “Generate Deployment Files” wird eine HTML Datei etc. angelegt, welche dann auf den Webserver geladen werden. Von dort kann nun jeder Kunde / Tester die App über das iOS Gerät herunterladen und installieren.

Ein kleiner Tipp am Rande, wenn man statt eines Webservers Speicherplatz von Getdropbox nutzt und die Files vom BetaBuilder in ein Dropbox Verzeichnis erstellen lässt, spart man sich das hochladen.

Der Macher des BetaBuilders (HunterHillegas) hat den Quelltext der Anwendung auf GitHub bereit gestellt und erhofft sich dadurch eine schnellere Weiterentwicklung. Zusätzlich soll die Anwendung bald im Mac App Store verfügbar sein.

(via http://iphone-dev-tips.alterplay.com/2011/01/ios-betabuilder-dropbox-fastest-adhoc.html)

Update 2014: Apple hat mittlerweile nachgezogen und sein eigenes Produkt herausgebracht um die Beta-Verwaltung für Entwickler zu erleichtern. Apple nennt es “TestFlight“. Das TestFlight bassiert dabei auf der von Apple aufgekauften Firma TestFlight. Derzeit ist das Programm jedoch selbst noch in der Beta Version.

aycspush iPhone App für SysAdmins

aycspush logo

Aus dem Hause aycs ist mittlerweile eine neue App im AppStore angekommen – aycspush.

Der anvisierte Kundenkreis von aycspush sind in erster Linie System-Administratoren die verschiedene Server betreuen. Bisher wurden solche Systeme meistens überwacht indem Scripte eine E-Mail verschicken sobald ein Problem erkannt wird. Diese E-Mail muss von dem entsprechenden Admin aber aktiv gelesen werden. Alternativ bieten manche Systeme auch Schnittstellen an, um eine SMS zu schicken, diese kosten jedoch Gebühren.

aycspush vereinigt Vorteile aus beiden Bereichen. Die Generierten Nachrichten werden per E-Mail an das aycspush System gesendet, was eine hohe Kompatibilität zu unterschiedlichsten Zielsystemen gewährleistet, zum anderen werden die Nachrichten mittels Apples Push Dienst auf das iPhone, iPad oder iPod Touch gepusht und sind somit quasi sofort beim Admin.

Wie läuft das ganze nun ab?

Als erstes muss die App gekauft werden (0,79 Cent im AppStore)

Nach dem ersten Start der App wird gefragt, ob die App push Nachrichten senden darf, diese Frage muss mit Ja beantwortet werden.

Über die Info Seite erhält man nun die eindeutige Adresse seines Gerätes in Form einer E-Mail Adresse. diese setzt sich aus einem eindeutigen Device Token und der Endung @aycspush.com zusammen. Diese Adresse kann ab jetzt in allen erdenklichen Scripten oder Geräten als Adresse für Statusmeldungen, Probleme oder Warnungen genutzt werden.

Empfangene Nachrichten erscheinen zum Einen als Push Meldung auf dem Home Screen, können zum Anderen auch in der Anwendung selbst aufgerufen werden, wobei auch Details zur Nachricht ersichtlich sind.

aycspush App Ansicht

Alles in Allem eine feine runde Sache

Update 2014:
Mittlerweile wird Aycspush nicht mehr aktiv entwickelt, ob Nachrichten noch zugestellt werden, vermag ich nicht zu sagen, da ich nicht mehr in diesem Bereich tätig bin.

Kidsbox – iPhone App für Kinder

Kidsbox Logo

Kidsbox ist eine neue iPhone App im deutschen App Store.

Zielgruppe sind Eltern mit Kindern im Alter von 2-6 Jahren. Diese können mit der Kidsbox Töne aus ihrer Umwelt spielerisch lernen. Zum Start stehen kostenfrei Töne rund um den Bauernhof und Instrumente bereit. Gegen einen kleinen Obolus können Töne rund um den Ozean freigeschaltet werden.

Die App ist von der AYCS UG entwickelt worden und basiert auf dem three20 Framework. Das kindgerechte Design stammt von Markus Weber und die schönen Bilder wurden von ihm mit viel Liebe zum Detail von Hand gezeichnet.

(iphone Anwendung kostenlos im Deutschen App-Store erhältlich)

Screenshots:

Xcode Custom Back Button Action

Wer in seiner iPhone / iPad App eine Navigation-Bar nutzt, wird vllt. irgendwann an den Punkt gelangen, an dem er, aus welchen Gründen auch immer, eigene Aktionen bei Betätigung des BackButtons durchführen möchte.

Sei es, dass Speicher sofort freigegeben werden soll, eine Audio-File sofort gestoppt oder Meldungen an den Nutzer ausgegeben werden sollen. Hierzu ist eine mögliche Lösung, den vorhandenen BackButton durch einen einen eigenen zu ersetzen.

Dieser Button führt bei Touch dann eine Methode aus, in der die eigenen Anweisungen stehen, abgeschlossen durch die Anweisung, das aktuelle Element aus dem NavigationStack zu entfernen (pop).

Einziges “Problem” ist das Layout des Buttons, diesen wie einen Back Button erscheinen zu lassen, ermöglicht das Framwork three20. Folgender Codeausschnitt veranschaulicht die Vorgehensweise:

-(void) goBack
{
//Write your custommethods
NSlog(“hello custom Back Button”);
//Go back
[self.navigationControllerpopViewControllerAnimated:YES];
}

-(id) initWithName: (NSString*)name initwithBackround:(NSString*)backround {

// … Stuff

//Create the custom back button

TTButton *backButtonView = [TTButtonbuttonWithStyle:@”toolbarBackButton:”title:@”Back”];

[backButtonView addTarget:selfaction:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];

[backButtonView sizeToFit];

UIBarButtonItem *backButton = [[UIBarButtonItemalloc] initWithCustomView:backButtonView];

self.navigationItem.leftBarButtonItem = backButton;

[backButton release];

// Stuff

}