Файл прикреплен к электронной почте - я пытаюсь открыть myapp - PullRequest
1 голос
/ 06 сентября 2011

Я нашел несколько постов и, прочитав между строк, добавил 3 раздела в свой info.plist. Когда я запускаю свое приложение, к письму прилагается файл с суффиксом "ntdb", но, похоже, электронное письмо не распознает расширение. Я предполагаю, что я, должно быть, ввел что-то не так в листинге, но после попытки каждой комбинации в течение последних 2 дней, я не знаю, что еще изменить. Может кто-нибудь сказать мне, что я сделал не так? Имя файла в письме - это дата и ntdb, например: «myfile 09-06-2011.ntdb»

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFiles</key>
            <array>
                <string>icon57</string>
            </array>
            <key>CFBundleTypeName</key>
            <string>myAppName</string>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
                <key>LSHandlerRank</key>
                <string>Owner</string>
                <key>LSItemContentTypes</key>
            <array>
                <string>com.myCompanyName.myAppName.ntdb</string>
            </array>
        </dict>
    </array>



<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.plain-text</string>
            <string>public.text</string>
        </array>
        <key>UTTypeDescription</key>
        <string>myAppName Backup</string>
        <key>UTTypeIdentifier</key>
        <string>com.myCompanyName.myAppName.ntdb</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>ntdb</string>
            <key>public.mime-type</key>
            <string>text/txt</string>
        </dict>
    </dict>
</array>


    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLIconFile</key>
            <string>icon57</string>
            <key>CFBundleURLName</key>
            <string>com.myCompanyName.myAppName</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>myAppName</string>
            </array>
        </dict>
    </array>

1 Ответ

0 голосов
/ 09 сентября 2011

Потребовалось навсегда, чтобы найти эту работу ... наконец-то получил. Ниже приведен список того, что вам нужно. Кроме того, plist на самом деле MyAppName-info.plist Я сам никогда не был уверен, как этот файл был назван полностью.

Измените их в приведенном ниже файле, чтобы они соответствовали вашему приложению:

MyAppName - измените имя вашего приложения

MyCompanyName - Перейдите в свою "компанию"

MyfileExtensionSuffix - это суффикс вашего файла, например, zip-файл будет ZIP, например.

Если электронная почта запущена, убить этот процесс, чтобы он взял имя. Когда вы откроете письмо с вложенным файлом с расширением суффикса, откроется ваше приложение.

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>myAppName x 57</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>myAppName</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.myCompanyName.myAppName.myFileExtensionSuffix</string>
        </array>
    </dict>
</array>

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLIconFile</key>
        <string>57 icon</string>
        <key>CFBundleURLName</key>
        <string>com.myCompanyName.myAppName.myFileExtensionSuffix</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myAppName</string>
        </array>
    </dict>
</array>


<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>myAppName Backup</string>
        <key>UTTypeIdentifier</key>
        <string>com.myCompanyName.myAppName.myFileExtensionSuffix</string>
        <key>UTTypeSize320IconFile</key>
        <string>myAppName x 114</string>
        <key>UTTypeSize64IconFile</key>
        <string>myAppName x 57</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>myFileExtensionSuffix</string>
            <key>public.mime-type</key>
            <string>application/myAppName</string>
        </dict>
    </dict>
</array>

В вашем делегате приложения вам нужно что-то вроде этого:

- (void) CopyArg0: (NSURL *) url { if (url! = nil && [url isFileURL]) { NSData * d = [NSData dataWithContentsOfURL: url]; documentPaths = NSSearchPathForDirectoriesInDomains (NSDocumentsDirectory, NSUserDomainMask, YES);

documentsDir = [[NSString alloc]

initWithFormat: @ "% @", [documentPaths objectAtIndex: 0]];

[[NSFileManager defaultManager]createFileAtPath:[documentsDir

stringByAppendingPathComponent: [url lastPathComponent]] содержимое: d Атрибуты: ноль];

    alertStandard = [[UIAlertView alloc] initWithTitle:@""  

сообщение: @ "Файл добавлен в ваши документы. Blaaa blaaa и т. Д." делегат: self cancelButtonTitle: @ "OK" otherButtonTitles: nil];

    [alertStandard show];
    [alertStandard release];


}
 }

- (BOOL) приложение: (UIApplication *) приложение handleOpenURL: (NSURL *) URL {

if(url != nil && [url isFileURL])
{
    [self CopyArg0:url];

    return YES;

}

return NO;
 }
  • (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions

{

NSURL * url = (NSURL *) [launchOptions valueForKey: UIApplicationLaunchOptionsURLKey]; if (url! = nil && [url isFileURL]) { [self CopyArg0: url];
}

}

...