Hi,
das ist grundsätzlich kein Problem.
In Deiner Info.plist-Datei kannst Du Dateitypen mit dem key "CFBundleDocumentTypes" registrieren.
Beispiel:
Code:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>MyDocument-320.png</string>
<string>MyDocument-64.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Your custom file type</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>
com.deinedomain.customtype.xyz</string>
</array>
</dict>
</array>
Unbekannt Dateitypen (wie hier
com.deinedomain.customtyoe.xyz musst Du auch in der Info.plist-Datei mit dem Key "UTExportedTypeDeclarations" exportieren:
Beispiel:
Code:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.plain-text</string>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>Some custom file type description</string>
<key>UTTypeIdentifier</key>
<string>
com.deinedomain.customtype.xyz</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>xyz</string>
<key>public.mime-type</key>
<string>mycustommimetype/x-xyz</string>
</dict>
</dict>
</array>
Damit wird Deine App als Handler für die Dateien registriert.
Wird dann eine Datei aus einem Attachment mit deiner App geöffnet gibt es zwei Möglichkeiten wie Du das mitbekommen kannst:
1.) Deine Anwendung läuft aktuell NICHT im Hintergrund:
Deine Anwendung wird gestartet und der application:didFinishLaunchingWithOptions-Callback wird aufgerufen mit launchOptions valueForKey: UIApplicationLaunchOptionsURLKey.
2.) Deine Anwendung läuft schon:
Dann wird der application: openURL-Callback aufgerufen.
In den beiden Callbacks kannst Du dann darauf reagieren und die Datei entsprechend öffnen.
Edit: Versehentlich reingerutscher Smiley entfernt