Обробка типу файлів є новою для iPhone OS 3.2 і відрізняється від вже існуючих спеціальних схем URL-адрес. Ви можете зареєструвати свою програму для обробки певних типів документів, і будь-яка програма, яка використовує контролер документів, може передавати обробку цих документів у вашу власну програму.
Наприклад, моє додаток Молекули (для яких доступний вихідний код) обробляє .pdb і .pdb.gz типи файлів, якщо вони будуть отримані по електронній пошті або в іншому підтримуваному додатку.
Щоб зареєструвати підтримку, вам потрібно буде мати щось подібне у своєму Info.plist:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>Document-molecules-320.png</string>
<string>Document-molecules-64.png</string>
</array>
<key>CFBundleTypeName</key>
<string>Molecules Structure File</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.sunsetlakesoftware.molecules.pdb</string>
<string>org.gnu.gnu-zip-archive</string>
</array>
</dict>
</array>
Надано два зображення, які будуть використовуватися як піктограми для підтримуваних типів у Пошті та інших програмах, здатних показувати документи. LSItemContentTypes
Ключ дозволяє забезпечити ряд однакових типу ідентифікаторів (ІМП) , що ваш додаток може відкрити. Щоб переглянути список визначених системою UTI, див . Посилання на уніфіковані ідентифікатори типу Apple . Ще детальніше про UTI можна знайти в Огляді Apple Uniform Type Identifier . Ці посібники перебувають у центрі розробників Mac, оскільки ця можливість перенесена через Mac.
Один з UTI, використаних у наведеному вище прикладі, був визначений системою, а інший - UTI, що стосується додатків. Необхідно експортувати UTI, що відповідає додатку, щоб інші програми в системі могли знати про це. Для цього вам слід додати розділ до свого Info.plist, як описано нижче:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.plain-text</string>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>Molecules Structure File</string>
<key>UTTypeIdentifier</key>
<string>com.sunsetlakesoftware.molecules.pdb</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>pdb</string>
<key>public.mime-type</key>
<string>chemical/x-pdb</string>
</dict>
</dict>
</array>
Цей конкретний приклад експортує com.sunsetlakesoftware.molecules.pdb
UTI з розширенням файлу .pdb, що відповідає типу MIME chemical/x-pdb
.
Якщо це на місці, ваша програма зможе обробляти документи, приєднані до електронних листів або інших програм у системі. У пошті можна натиснути і утримувати, щоб відкрити список програм, які можуть відкрити певне вкладення.
Коли вкладення буде відкрито, ваша програма буде запущена, і вам потрібно буде обробити цей файл у -application:didFinishLaunchingWithOptions:
способі делегування програми. Здається, що файли, завантажені таким чином з Пошти, копіюються в каталог Документів вашої програми під підкаталогом, відповідним до того, до якого вікна електронної пошти вони надійшли. Ви можете отримати URL-адресу цього файлу в методі делегування програми, використовуючи такий код:
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
Зауважте, що це той самий підхід, який ми використовували для обробки користувацьких схем URL-адрес. Ви можете відокремити URL-адреси файлів від інших, скориставшись таким кодом:
if ([url isFileURL])
{
// Handle file being passed in
}
else
{
// Handle custom URL scheme
}
-application:didFinishLaunchingWithOptions:
делегат додатка викликається лише в тому випадку, якщо ваш додаток не було фоновим режимом при відкритті для обробки файлу.