Mit Apple’s AirDrop lassen sich beliebige Inhalte zwischen Apps unkompliziert teilen. Man tippt auf den Action Button  und wählt aus einer Liste von Kontakten aus, die sich mit ihrem Gerät in der Nähe befinden. Der Kontakt akzeptiert die Übertragung und wählt eine App, mit der der geteilte Inhalt geöffnet werden soll.

Folgende Geräte sind die Mindestvoraussetung um AirDrop nutzen zu können:

  • iPhone 5 oder neuer
  • iPad (4. Generation) oder neuer
  • iPad mini
  • iPod touch (5. Generation oder neuer)

WLAN und Bluetooth müssen aktiviert sein.

(https://support.apple.com/de-de/HT204144)

 

Wie konfiguriert man die eigene App für AirDrop?

Beim Teilen von Inhalten über AirDrop werden Dateien verschickt.

Die App definiert Document Types und UTIs (Uniform Type Identifiers) für das Bereitstellen (Export) und für das Entgegennehmen (Import) von Inhalten. Das kann in Xcode für ein Build Target in der Info Sektion eingestellt werden:

Bildschirmfoto 2015-10-28 um 17.48.22

Bildschirmfoto 2015-10-28 um 17.46.52

Bildschirmfoto 2015-10-28 um 17.47.26

Bildschirmfoto 2015-10-28 um 17.47.41

Wenn die App spezielle Inhalte bereitstellt, deren Format nur die App selbst oder eine spezielle andere App kennt, dann sollte man einen eigenen eindeutigen Inhaltstyp definieren. Typischerweise wird für den Identifier das reverse DNS Format benutzt: „com.copmanyName.appName.documentType“. Für den public.mime-type empfiehlt sich „application/appName“ oder „application/dokumentName“. Die Dateiendung ist frei wählbar und kann auch aus deutlich mehr als 3 Zeichen bestehen.

In diesem Beispiel wird der Export und Import von Vokabel-Paketen für eine Vokabeltrainer-App definiert.

Für bereits existierende bzw. bekannte Arten von Inhalten wie zum Beispiel Bilder oder Videos sollte man auf die System-Declared Uniform Type Identifiers zurückgreifen: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

(Es kommt oft vor dass Xcode immer wieder abstürtzt, wenn man in der Info Sektion einen bestimmten Eintrag bearbeitet. In diesem Fall kann man im Project Navigator die Info.plist per Rechtsklick als „Source Code“ öffnen und die Einträge in XML bearbeiten.)

 

Als nächstes muss man in der App einen Button festlegen (zum Beispiel den Action Button  ), der den UIActivityViewController öffnet, um die Inhalte bereitzustellen:

Bildschirmfoto 2015-10-29 um 17.54.38

Dieser Code benutzt das ab iOS 8 neu eingeführte UIPopoverPresentationController System, das auf iPhone und iPad einheitlich funktioniert.

Hier wird ein ein Objekt der Klasse Package aus dem Beispielprojekt geteilt. Es wird vorher als Datei abgespeichert und repräsentiert ein Vokabel-Paket.

Wenn der Benutzer auf den Button tappt, erscheint das Activity Popup:

IMG_0097

Für das Activity-Item, das an den UIActivityViewController übergeben wird, sollte man eine eigene Klasse (hier: VokPackageActivityItemProvider) anlegen:

Bildschirmfoto 2015-10-29 um 18.01.02

Sobald der Benutzer einen AirDrop Kontakt ausgewählt hat, wird in einem Background-Thread die item() Methode aufgerufen. In diesem Beispiel wird einfach nur die URL zu der bereits existierenden Datei zurückgegeben. Man kann auch die Datei innerhalb der item() Methode generieren und dann ein NSURL Objekt mit dem Pfad auf die Datei zurückgeben.

Nachdem die Datei versendet wurde, fragt das Gerät des ausgewählten Kontaktes in welcher App die Datei geöffnet werden soll:

IMG_0099

Um den bereitgestellten Inhalt mit einer App entgegenzunehmen, wird im application delegate der URL handler definiert:

Bildschirmfoto 2015-10-29 um 18.40.36

Zunächst wird geprüft, ob die Datei die passende Dateiendung hat (hier: .vok). Die Datei befindet sich erst mal im Inbox Ordner mit eingeschränkten Zugriffsrechten. Man sollte die Datei gleich in den passenden Systemordner verschieben (Documents, Library, …).

In diesem Beispiel wird die Datei in Documents verschoben und steht ab diesem Zeitpunkt der App als Vokabelpaket bereit:

IMG_0100

Vokabeltrainer-Beispielprojekt Download:

Vok.zip

 

Die drei access control levels private, internal und public, die Apple mit der Xcode 6 beta 4 in Swift hinzufügte, sind ohne Frage sehr nützlich. Sie ermöglichen es, Implementierungsdetails zu verbergen (Information Hiding), und damit einen der Kernaspekte objektorientierter Programmierung zu nutzen.

Damit beginnen wir nun enthusiastisch alle Methoden als private zu kennzeichnen, die nur innerhalb der Klasse aufgerufen werden sollen. Die Klasse bleibt nach außen übersichichtlich und die Methodenauswahlliste von Xcode bietet von außen nur diejenigen Methoden zum Aufrufen an, die nicht private sind. Wunderbar. Oder?

So einfach ist das leider nicht, denn da gibt es oft einen Haken:

Weiterlesen

Was ändert sich, wenn man Objective-C Code in Swift umschreibt?

In meinem letzten Artikel Von Objective-C zu Swift: Table Views, habe ich den umgeschriebenen Code eines Table View Menüsystems verglichen.

In diesem Artikel nehme ich das Einlesen von JSON Daten als Beispiel und verwende folgende Daten: Weiterlesen

Swift, die neue Programmiersprache von Apple ist da und steht mit Xcode 6 als Beta zum Ausprobieren bereit.
Wir haben einige typische Lösungen aus der Objective-C Welt in Swift umgeschrieben, um zu sehen was passiert.

In diesem Artikel zeige ich beispielhaft den umgeschriebenden Objective-C Code eines Menüsystems in Form einer TableView: Weiterlesen

Nachdem im ersten Beitrag die grundsätzliche Technik von iBeacons gezeigt wurde ist es Zeit für ein kleines Update. Die Welt dreht sich schnell bei diesem Thema und Apple ist permanent dabei die Funktionen zu verbessern und zu erweitern.
Dieser Artikel stellt die wesentlichen Neuerungen zusammen die seit iOS7 bis iOS7.1 gekommen sind. Weiterlesen

Mit unserem neuen Keychains and Provisioning Profiles Management Plugin für den Jenkins Continuous Integration Build Server können die zur Signierung einer iOS-App notwendingen Keychain- und Mobile Provisioning Profile Dateien einfach direkt über das Jenkins-Frontend verwaltet werden. Somit entfällt ein manuelles Hinzufügen von Keychains zur Schlüsselbundverwaltung und eine manuelle Installation der Provisioning Profiles auf jedem Mac, welcher als Build-Instanz (egal ob Master oder Slave) für iOS/OSX-Projekte dient.

Weiterlesen

Aufgrund des großen Interesses an unserem Artikel zur Corvette Fensterhebersteuerung per iPhone App nehmen wir das Thema Bluetooth 4.0 noch einmal auf. Wir bauen einen Universal-Fernbedienungs-Empfänger iPhone. Dazu gibt es hier die Do-it-yourself-Anleitung und im AppStore die passende App (Coming soon) dazu. Viel Spaß beim Nachbauen!  Weiterlesen

Bluetooth 4.0 Low Energy ist in aller Munde. Es erscheinen beinahe täglich neue Gadgets die per Bluetooth 4.0 mit dem Smartphone kommunizieren. Warum also nicht Funktionen des Autos per Smartphone fernsteuern?

Weiterlesen

Mit dem Erscheinen des iPhone 5 und dem neuen Anschluss ging ein Aufschrei durch die Apple Gemeinde, da die Kompatibilität zu bisherigem Zubehör mehr als ungewiss war.

An dieser Situation hat sich bis heute leider nicht viel geändert. Es herrscht immer noch große Unsicherheit, was die Kompatibilität von Zubehör mit dem Ligthning zu 30-Pin-Adapter betrifft.

Fakt ist der Folgende. Es gab bisher grundsätzlich drei Wege, wie Zubehör mit dem iPhone kommuniziert hat.

  1. iPod Interface (seriell), das sogenannte iPodOut. Das serielle Interface wurde benutzt, um den iPod zu steuern. Zusätzlich wurden analoge Line-Out-Ausgänge genutzt, um das Audiosignal abzugreifen.
  2. Einige Hersteller – wie z. B. BMW oder Pioneer mit dem AppRadio – benutzen zusätzlich den analogen Videoausgang, um den Bildschirminhalt des iPhone auf den eigenen Bildschirm zu spiegeln.
  3. USB Interface und Line-Out. Hier wird USB verwendet, um den iPod zu kontrollieren. Audio wird wieder über Line-Out abgegriffen.

Inzwischen hat sich herausgestellt, dass es beim iPhone 5 keinen analogen Videoausgang mehr gibt. Das bedeutet, dass Hersteller, die auf dieses Pferd gesetzt haben, im Moment ein großes Problem haben. Außerdem hat das neue iPhone keine analogen Ausgänge mehr für Audio-Signale. An dieser Stelle schafft aber der Lightning zu 30-Pin-Adapter Abhilfe und konvertiert die Signale (D/A Audio-Realtime-Konvertierung).

Zubehör, welches auf iPodOut setzt, um den iPod zu steuern, hat ganz schlechte Karten, da es schlichtweg im Moment dafür keine Lösung gibt. Betroffen ist hier unter anderem das AppRadio von Pioneer.
http://www.pioneerelectronics.com/PUSA/Apple+Compatibility

Das einzige Zubehör, welches sicher funktioniert, ist das, was rein über USB kommuniziert (also digital). Es wird spannend, wie die Hersteller dieses Problem in den Griff bekommen wollen.

Dank der iOS 6 Einführung ist es vermutlich endlich soweit, dass Apple den Kauf von Apps für die Mitarbeiter seiner Firmenkunden ermöglicht.

Lange haben Firmen darauf gewartet, jetzt wird es endlich Realität. Wovon andere Plattformen noch meilenweit entfernt sind, hat Apple damit in vielen Ländern umgesetzt.

Wozu genau soll das gut sein? Weiterlesen