2013-03-08 9 views
1

사용자가 코어 데이터를 사용하여 메일을 보내고 (iOS 응용 프로그램) 양식으로 데이터를 보내도록 허용하는 iOS 앱을 만들고 있습니다. 내가 MFMailComposeViewController 클래스를 사용하여 전자 메일에 첨부 한 csv 파일 파일이 내가 데이터를 반복하고 사용자가 더 많은 데이터파일이 보내 졌는지 또는 iOS 메일의 보낼 편지함에 있는지 알 수있는 방법

이 쉽게 할 수 있습니다를 제출 버튼을 칠 때의 다시 전송되지 않도록 각 레코드에 제출 된 플래그를 설정하려면 전송 후

- 나는 에서

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ 

내에서 사용하는 것이 수행 할 메소드를 호출 할 수

case MFMailComposeResultSent: 

가 전송 된 후 나 자신 뒤처리 또한 CSV 파일을 삭제하고 싶지만 내 홍보 oblem이 .... (편집 - 하단의 추가 테스트 후 편집 참조)

MFMailComposeResultsSent는 MFMailComposeResult입니다. 메일이 보내 졌을 때나 보낼 편지함으로 보내졌지만 보내지지 않은 경우에도 마찬가지입니다. 이 시점에서 csv 파일을 삭제하고 인터넷 연결이 끊어지고 메일이 보낼 편지함에 있으면 연결이 백업되고 메일이 전송되면 첨부 파일이 이미 삭제되고 분명히 전송되지 않습니다.

내 csv 파일의 크기는 작습니다. 하나의 레코드가 약 1kb, 5kb가 약 2kb (첫 번째 줄이 모든 필드 이름이므로 차이가 있음)이며 그 기준으로 모든 파일 나는 30kb보다 더 커질 것이므로 나는 많은 기억을 사용하지 않을 것이다. 실제로 가장 열정적 인 사용자조차도 절반의 MB 데이터를 생성하는 모든 경우를 볼 수 없습니다.

어떻게 생각합니까?/접근해야합니까? 나는 사과가 얼마나 많은 작은 파일들을 가지고 있을지에 대해 확신하지 못하고 어떻게 이것이 내 애플 리케이션 제출에 영향을 미칠지를 확신하지 못한다. 사전에

덕분에 시간을내어 읽기 및/또는

시간 지연에 일부 문제가있는 것 같습니다

사이먼

편집에 대응 - 아마도 아이폰 OS가 삭제 된 캐싱 파일? 짧은 시간 동안.

나는 첨부 파일이 통과하는 곳에서 여러 번의 테스트를 진행했다. 나는 와이파이 모드와 비행기 모드로 테스트를하고 있었는데 파일을 다시 켰을 때 잠깐 동안 파일을 보냈다. 나는 방금 내가 wifi 길을 떠났던 곳을 테스트했다. 그리고 i는 아직도 접속되었다. 그러나 나는 wifi 라우터의 뒤에서 케이블을 끌어 당겼다. 그래서 나는 그것 뒤에 어떤 인터넷도 가지지 않고 있었다. 내가 라우터에 되돌아 가게되고, 메일이 갔다가 첨부 파일을 잃어 버렸고 메일이 사라졌습니다. 그러나 나는 천국 - 지금은 첨부 파일이 겪은 테스트 절반의 무리들이 더 많은 테스트

내 질문 할 때 무슨 일이 일어 났는지 내 오해에 힘 입어되었을 수

AFTER

편집하지 않았다 절반이 메일을 실제로 확인할 수 있는지 여부를 알고 싶으면 답변을 표시했습니다. 하나의 제공된 대답은 '불가능하지 않습니다'라고 말합니다. 다른 사람이 이것을 확인한 다음 그 대답으로 표시 할 수 있습니까?

어쨌든

본인은 첨부 파일을 잃고 내 문제는 메일 응용 프로그램에 가서 메일 연결을 찾기 위해 실패하는 동안 보낼 편지함을 확인에서 온 것 같아요. 때때로 Mail은 메일에 경고면을 추가하고 첨부 파일이 가끔 사라집니다. 나가 발송물을 잘 홀로 남겨 두는 경우에, 부착은 그들이해야하는 것처럼가는 것처럼 보인다. 이것이 사실인지 확인하기 위해 더 많은 테스트를 할 것입니다.

+0

때때로 첨부 파일이있는 내 이메일이 단순히 보낼 편지함에 걸려서 보내지 않을 수 있습니다. 이 모든 경험? – elsurudo

답변

1

불행히도이를 확인할 방법이 없습니다.

MFMailComposeResultSent

The email message was queued in the user’s outbox. It is ready to send the next time the user connects to email. 

수단 메시지 (계속 보낼 편지함에) 전송을 위해 대기 할 때이 결과는,이 전송 된 후 어떤 결과가 생성되지 않습니다이 얻을 것이다.

자세한 내용은 MFMailComposeViewController을 참조하십시오.

+0

예 - 그곳에는 내 문제가 있습니다. 실제로 연결이 양호하더라도 전송되기 전에 삭제 될 수있는 좋은 기회이기 때문에 실제로 더 나쁩니다. 그래서 MFMComposeResultSent는 내 정리 작업을 수행 할 수없는 곳입니다. – SimonTheDiver

1

어떻게 CSV 파일을 이메일에 첨부 하시겠습니까? 파일 URL을 지정하는 대신 NSData를 첨부 할 수 있습니다. 그렇게하면 첨부 파일이 외부 파일에 묶이지 않고 전자 메일 자체에 포함됩니다.

자세한 내용은 MFMailComposeViewController addAttachmentData을 참조하십시오.

NSData *csvData = [NSData dataWithContentsOfFile:filePath]; 

는 addAttachmentData를 사용하여 MFMailComposeViewController에 csvData를 연결합니다.

+0

예 - 파일 URL을 사용하고 있습니다. - .csv 파일을 보내서 벤토에로드하고 거기에있는 데이터를 볼 수 있습니다. – SimonTheDiver

+0

확실합니까? 첨부 파일이 삭제 된 경우 보낼 편지함에서 이메일을 보내지 않으십니까? 위에서 설명한대로 NSData를 전자 메일에 포함하면 더 이상 파일을 보관할 필요가 없습니다. – melsam

+1

전자 메일이 전송됩니다. 문제는 때로 첨부 파일이 간다 때로는 내가 wifi를 다시 켜면 안 - 내가 제안을 사용하여 코드를 변경했습니다 그리고 그것은 많은 차이를 만드는 것 같지 않습니다 \ code \ NSData * siteCSVData = [NSData dataWithContentsOfFile : sitesFile]; [mailer addAttachmentData : siteCSVData mimeType : @ "text/csv"fileName : @ "testSites.csv"]; // [mailer addAttachmentData : [NSData dataWithContentsOfFiles : sitesFile] mimeType : @ "text/csv"fileName : @ "demoSites.csv"]; – SimonTheDiver