<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roger Boesch &#187; 3.0</title>
	<atom:link href="http://www.rogerboesch.com/tag/3-0/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rogerboesch.com</link>
	<description>iOS Warrior</description>
	<lastBuildDate>Mon, 22 Nov 2010 20:04:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SDK 3.0 – MapKit</title>
		<link>http://www.rogerboesch.com/2009/07/24/sdk-3-0-mapkit/</link>
		<comments>http://www.rogerboesch.com/2009/07/24/sdk-3-0-mapkit/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 10:43:11 +0000</pubDate>
		<dc:creator>roger</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[MapKit]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=427</guid>
		<description><![CDATA[Im iPhone SDK 3.0 gibt es viele Bereiche, die für sich alleine schon ein ganzes Blog füllen würden. Ich picke deshalb der Reihe nach ein paar der neuen Frameworks und Klassen heraus und ergänze sie jeweils mit konkreten Code Beispielen zum selber ausprobieren. Dazu gibts Videos, die den Ablauf detailliert erklären. Beginnen werde ich an [...]]]></description>
			<content:encoded><![CDATA[<p>Im iPhone SDK 3.0 gibt es viele Bereiche, die für sich alleine schon ein ganzes Blog füllen würden. Ich picke deshalb der Reihe nach ein paar der neuen Frameworks und Klassen heraus und ergänze sie jeweils mit konkreten Code Beispielen zum selber ausprobieren. Dazu gibts Videos, die den Ablauf detailliert erklären. Beginnen werde ich an der Stelle mit MapKit. MapKit ist in einfachen Worten, die Möglichkeit Google Maps in eigene Apps einzubauen, <strong>ohne</strong> das über eine normale Browseranbindung wie bisher machen zu müssen. Der Vorteil liegt auf der Hand: Alles läuft viel schneller und fast noch wichtiger, iPhone like mit schönen Animationen und Unterstützung der ganzen Gestures. Der Einstieg in MapKit ist dabei sehr einfach und geschieht durch Einbindung der von UIView abgeleiteten Klasse MkMapView. Diese stellt schon mal alles zur Verfügung, um eine Karte anzuschauen, in dieser zu scrollen und zu zoomen. Als nächstes bauen wir die Anzeige unseres aktuellen Standorts ein (die blaue, von Google Maps her bekannte Stecknadel) und ergänzen unsere kleine Map Anwendung um die Möglichkeit, einen beliebigen anderen Standort anzuzeigen. Hier kommt die MkAnnotationView Klasse zum Einsatz, die zusammen mit MKMapView die wichtigsten Konzepte einer Map Integration abdeckt. Viel Spass beim selber Ausprobieren!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/p/45578B6F6FB337DF&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/p/45578B6F6FB337DF&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Soweit unser Einstig in MapKit. Im nächsten Beitrag bauen wir das Programm aus und ergänzen es um eine einfache Suche nach Orten, die wir anschliessend in der Karte anzeigen.<br />
<a href="http://www.rogerboesch.com/tutorials/MapKit-Part1.zip">Source zum Artikel</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/07/24/sdk-3-0-mapkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDK 3.1 verfügbar</title>
		<link>http://www.rogerboesch.com/2009/07/01/sdk-3-1-verfugbar/</link>
		<comments>http://www.rogerboesch.com/2009/07/01/sdk-3-1-verfugbar/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 06:24:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=279</guid>
		<description><![CDATA[Nur zwei Wochen, nachdem die Firmware 3.0 offiziell verfügbar wurde, stellt Apple den iPhone-Entwickler bereits eine neue Beta-Version zur Verfügung. Interessanterweise kommen ein paar durchaus spannende Features hinzu, die es wahrscheinlich nicht mehr rechtzeitig in den 3.0 Release geschafft hatten: Filmschnipsel können jetzt auch als Kopie abgespeichert werden Sprachsteuerung über Bluetooth-Headsets wir möglich Haptisches Feedback [...]]]></description>
			<content:encoded><![CDATA[<p>Nur zwei Wochen, nachdem die Firmware 3.0 offiziell verfügbar wurde, stellt Apple den iPhone-Entwickler bereits eine neue Beta-Version zur Verfügung. Interessanterweise kommen ein paar durchaus spannende Features hinzu, die es wahrscheinlich nicht mehr rechtzeitig in den 3.0 Release geschafft hatten:</p>
<ul>
<li>Filmschnipsel können jetzt auch als Kopie abgespeichert werden</li>
<li>Sprachsteuerung über Bluetooth-Headsets wir möglich</li>
<li>Haptisches Feedback durch Vibration, wenn man die Anordnung der Home Apps verschiebt</li>
<li>Optimierung von OpenGL</li>
<li>API-Schnittstelle erlaubt Drittanbietern den Zugriff auf die 3GS-Videos</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/07/01/sdk-3-1-verfugbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push Notifications</title>
		<link>http://www.rogerboesch.com/2009/06/28/push-notifications/</link>
		<comments>http://www.rogerboesch.com/2009/06/28/push-notifications/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 14:57:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[Push Notification]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=173</guid>
		<description><![CDATA[Push Notifications sind sicherlich eines der Highlights im SDK 3.0. Obwohl relativ leicht zu implementieren, gibt es doch einige Fallstricke und Fragen, die auftauchen, wenn man sich mit dem Thema befasst. In diesem Artikel geht es dabei im Wesentlichen um die Einbindung auf dem iPhone. Fast die meiste Arbeit gilt es jedoch auf einem Push [...]]]></description>
			<content:encoded><![CDATA[<p>Push Notifications sind sicherlich eines der Highlights im SDK 3.0. Obwohl relativ leicht zu implementieren, gibt es doch einige Fallstricke und Fragen, die auftauchen, wenn man sich mit dem Thema befasst. In diesem Artikel geht es dabei im Wesentlichen um die Einbindung auf dem iPhone. Fast die meiste Arbeit gilt es jedoch auf einem Push Provider (Server) zu implementieren, doch dazu mehr in einem der nächsten Post&#8217;s.</p>
<p>Im SDK stehen neue Methoden zur Verfügung, um Push Notifications einzubinden. Diese werden im Application Delegate untergebracht und werden vom iPhone entsprechend den eingehene Notifications aufgerufen. Dabei sind die Schritte immer dieselben:</p>
<ol>
<li>Registrieren beim Apple Notification Server (APNS). Dies ist bei jedem Start erforderlich und geschieht mittels: <em>registerForRemoteNotificationTypes</em></li>
<li>Danach ruft das iPhone OS eine der beiden Methoden auf. Im Falle einer erfolgreichen Registrierung:<em><br />
didReceiveRemoteNotification</em>, falls nicht <em>didFailToRegisterForRemoteNotificationsWithError</em>.</li>
</ol>
<p>Das war&#8217;s dann leider auch schon fast, was das SDK zu bieten hat. Leider wird beispielweise <em>didRecieveNotification</em> nur aufgerufen, wenn die Applikation gerade geöffnet ist. Erscheint jedoch die bekannte Alert Box, die einem auf eine Push Notification hinweist, wird die eigene iApp zwar gestartet, allerdings ist das Vorgehen dann anders, um darauf zu reagieren. Hier wurde eine weitere Methode eingefüht, die es  erlaubt, sogenante Launch Options beim Aufstarten abzufragen, ähnlich von Command Line Parametern auf Desktop Rechner. Auf dem iPhone heisst die entsprechende Methode <em>didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;</em> die es zu implementieren gilt. Dabei ist der wichtige Parameter <em>launchOptions</em>, in dem mittels des Keys <em>UIApplicationLaunchOptionsRemoteNotificationKey</em> die notwendigen Push Infos abgefragt werden können, was dann ungefähr so aussieht:</p>
<pre lang="objc" line="1">
NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
</pre>
<p>So haben wir nun iPhone seitig alles zusammen, um Push Notifications einzubinden. Alles Andere erfolgt ausschliesslich auf dem APNS und dem eigenen Server. Eine Herausforderung bleibt dabei das Testing und wie das am Besten zu bewerkstelligen ist, beschreibe ich im nächsten Topic of the Week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/06/28/push-notifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

