Dosya türü işleme, iPhone OS 3.2'de yenidir ve mevcut özel URL şemalarından farklıdır. Belirli belge türlerini işlemek için uygulamanızı kaydedebilirsiniz ve belge denetleyicisi kullanan herhangi bir uygulama bu belgelerin işlenmesini kendi uygulamanıza teslim edebilir.
Örneğin, uygulamam Moleküllerim (kaynak kodun mevcut olduğu) .pdb ve .pdb.gz dosya türlerini e-postayla veya desteklenen başka bir uygulamada alırlarsa işler.
Destek kaydetmek için Info.plist'inizde aşağıdakine benzer bir şey olması gerekir:
<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>
Mail'de ve belge gösterebilen diğer uygulamalarda desteklenen türler için simge olarak kullanılacak iki resim sağlanır. LSItemContentTypes
Anahtar başvurunuzun açabilirsiniz Üniforma Tipi Tanımlayıcıları bir dizi (İYE) sunmasına izin verir. Sistem tanımlı UTI'ların listesi için Apple'ın Tek Tip Tip Tanımlayıcıları Referansına bakın . UTI'ler hakkında daha fazla ayrıntı Apple'ın Tek Tip Tip Tanımlayıcılarına Genel Bakış'ta bulunabilir . Bu kılavuzlar Mac geliştirici merkezinde bulunmaktadır, çünkü bu özellik Mac'in karşısına taşınmıştır.
Yukarıdaki örnekte kullanılan İYE'lerden biri sistem tanımlıydı, diğeri uygulamaya özgü bir İYE'ydi. Uygulamaya özgü İYE'nin dışa aktarılması gerekecektir, böylece sistemdeki diğer uygulamalar bundan haberdar edilebilir. Bunu yapmak için Info.plist'inize aşağıdaki gibi bir bölüm eklersiniz:
<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>
Bu özel örnek com.sunsetlakesoftware.molecules.pdb
, UTI'yi MIME türüne karşılık gelen .pdb dosya uzantısıyla dışa aktarır chemical/x-pdb
.
Bu durumda uygulamanız, e-postalara eklenmiş veya sistemdeki diğer uygulamalardan gelen belgeleri işleyebilir. Mail'de, belirli bir eki açabilecek uygulamaların bir listesini görüntülemek için dokunup basılı tutabilirsiniz.
Ek açıldığında, uygulamanız başlatılır ve bu dosyanın -application:didFinishLaunchingWithOptions:
uygulama temsilci yönteminizde işlenmesi gerekir . Mail'den bu şekilde yüklenen dosyaların, uyguladıkları e-posta kutusuna karşılık gelen bir alt dizin altında uygulamanızın Belgeler dizinine kopyalandığı anlaşılır. Aşağıdaki gibi kodu kullanarak uygulama temsilcisi yönteminde bu dosyanın URL'sini alabilirsiniz:
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
Bunun, özel URL şemalarını işlemek için kullandığımız yaklaşımla aynı olduğunu unutmayın. Aşağıdaki gibi bir kod kullanarak dosya URL'lerini diğerlerinden ayırabilirsiniz:
if ([url isFileURL])
{
// Handle file being passed in
}
else
{
// Handle custom URL scheme
}
-application:didFinishLaunchingWithOptions:
Uygulama temsilcisinin yalnızca uygulamanız bir dosyayı işlemek için açıldığında arka plana sahip değilse çağrıldığına dikkat edilmelidir .