0

ユーザーがデータファイルをインポートしてエクスポートし、電子メールで送信できるアプリを構築しています。

そこで、拡張子が「.myAppExtension」のデータ ファイル タイプを作成しました。

最初はすべてがうまくいきます。メールをエクスポートして送信できません。そして、電子メールを開くと、メソッドは機能します。

-(BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url {

if (url != nil && [url isFileURL]) {
    NSLog(@"%@",url);
    NSLog(@"%@",[url pathExtension]);

    if([[[url pathExtension] lowercaseString] isEqualToString:[@"myAppExtension"  lowercaseString]]){
        //Deal with received file 

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Export ok" message:[NSString stringWithFormat:@"This file has been added : %@",[url lastPathComponent]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil,nil];
        [alert show];
    }else{

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Export failed" message:[NSString stringWithFormat:@"This extention is not supported : %@",[url pathExtension]] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil,nil];
        [alert show];
    }

}
return YES;
}

私の問題は、拡張子が「otherExtension」の他のタイプのファイルをエクスポートする場合です。アプリでこの拡張機能のデータ型を作成していません。

そこで、この 2 番目のタイプのファイルをエクスポートして電子メールを送信します。メールに表示されたファイル名は「file.otherExtension」。しかし、これが問題です。このメールの添付ファイルをタップすると、電子メール アプリからアプリケーションで開くように求められます。それは私が望んでいることではありません。私が言ったように、「otherExtension」のデータ型を作成しませんでした。

編集:これは、 myApp-info.plist でファイルタイプを作成した方法です:

ここに画像の説明を入力

4

1 に答える 1

0

誰かが興味を持っている場合、問題は電子メールの送信機能にありました。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init] ;
[picker setSubject:mailSubject];
[picker addAttachmentData:codedData mimeType:@"application/myApp" fileName:[filePath lastPathComponent]];
[picker setToRecipients:[NSArray array]];
[picker setMessageBody:mailBody isHTML:NO];
[picker setMailComposeDelegate:self];
[currentMainViewController presentViewController:picker animated:YES completion:nil];

メールの添付ファイルに MIME タイプを追加することで、受信アプリケーションはそれを使用してファイルを読み取っていました。MIME タイプを「nil」に置き換えると、問題が解決しました。

[picker addAttachmentData:codedData mimeType:nil fileName:[filePath lastPathComponent]];
于 2013-01-21T10:42:45.143 に答える