Tôi đang cố gắng để tạo ra/xuất khẩu một loại nhiễm trùng đường niệu độc quyền cho ứng dụng iOS của tôi (rất giống với cách Instagram độc quyền xử lý các com.instagram.exclusivegram UTI). Về cơ bản, tôi muốn com.photoapp.photo là ứng dụng có thể sử dụng nếu họ muốn có thể mở ảnh trong bất kỳ ứng dụng nào đã đăng ký chụp ảnh (tương tự như com.instagram.photo của Instagram). Sau đó, tôi muốn com.photoapp.exclusive chỉ có thể mở trong ứng dụng của tôi (tương tự như com.instagram.exclusivegram).Dành riêng iOS UTI
Những gì tôi đang chạy trên thiết bị của tôi là ngay cả khi sử dụng com.photoapp.exclusive, UIDocumentController nhắc tôi mở nó trong PhotoApp hoặc DropBox, nơi nó chỉ nên là PhotoApp.
Tôi có ứng dụng của tôi sẽ đăng ký UTI cũng như một ứng dụng ví dụ tôi đang sử dụng để kiểm tra khả năng khai mạc. Mã Tôi đang sử dụng trong ứng dụng ví dụ là dưới đây:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"photoapp://"]]) {
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"derp.png"], 1.0);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *fullPathToFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"photoapp.pae"];
[imageData writeToFile:fullPathToFile atomically:NO];
interactionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"file://%@", fullPathToFile]]];
interactionController.UTI = @"com.photoapp.exclusive";
interactionController.delegate = self;
[interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES];
}
Và đây là những gì tôi có trong file plist của tôi cho ứng dụng của tôi:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeDescription</key>
<string>Exclusive PhotoApp Photo</string>
<key>UTTypeConformsTo</key>
<array>
<string>com.photoapp.photo</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.photoapp.exclusive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>pae</string>
</dict>
</dict>
<dict>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>pa</string>
</dict>
<key>UTTypeIdentifier</key>
<string>com.photoapp.photo</string>
<key>UTTypeDescription</key>
<string>PhotoApp Photo</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.png</string>
<string>public.jpeg</string>
</array>
</dict>
</array>
<key>UIFileSharingEnabled</key>
<true/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>LSItemContentTypes</key>
<array>
<string>com.photoapp.exclusive</string>
<string>com.photoapp.photo</string>
</array>
<key>CFBundleTypeName</key>
<string>Photo</string>
<key>LSHandlerRank</key>
<string>Default</string>
</dict>
</array>
Ngay sau khi bạn xác định rằng định dạng tập tin của bạn phù hợp cho 'public.png' hoặc' public.jpeg' hoặc tương tự, tất cả các ứng dụng mà xác định rằng họ có thể mở các file trong số này UTIs sẽ có thể mở chúng. Nếu bạn loại bỏ mảng 'UTTypeConformsTo', điều đó sẽ giải quyết vấn đề của bạn. – Greg
Nói cách khác, không chỉ định rằng 'com.photoapp.exclusive' của bạn phù hợp với' com.photoapp.photo'. Để nguyên 'com.photoapp.photo', và không chỉ định bất kỳ sự phù hợp nào cho' com.photoapp.exclusive'. – Greg
Cảm ơn! Bạn có muốn làm cho một bình luận để tôi có thể chấp nhận câu trả lời của bạn? – joshholat