In-App EMail mit Anhang aus der Kamera/Fotoordner

A

AdamB

Mitglied
Thread Starter
Dabei seit
10.08.2014
Beiträge
29
Reaktionspunkte
1
Hallo Community,

ich wende mich an euch mit einem Problem, dass ich seit 3 Tagen alleine nicht lösen kann. Ebenso diverse Artikel im englischsprachigen Foren und auch hunderte Stunden Videosichtung im YouTube konnten mir nicht weiter helfen.
Wie im Titel beschrieben bin ich gerade dabei eine kleine App für meinen Onkel zu programmieren. Es ist eine kleine, einfache und rein zur privaten Nutzung gedachte App also lege ich keinen Wert auf Schönheit, Komplexität und Innovationen etc.
Diese soll EINE ganz einfache Funktion haben. Diese soll 3 Buttons haben. Einen zur Auswahl eines Fotos aus der CameraRoll, einen Button das die Fotofunktion öffnet und der dritte Button soll Email öffnen/generieren. Es soll eine UIImage zur Vorschau des gewählten/gemachten Fotos (nur ein Foto reicht aus) haben und es sollen 2 DataPicker mit div. Unterpunkten zur Auswahl sein. So und all diese Parameter müssen dann in die Email übernommen werden.
So weit habe ich es alles hinbekommen nur das übertragen des Fotos aus der View in die Mail klappt nicht! Ich habe bereits im Projekt fast alles programmiert nur will das übertragen-ding einfach nicht funktionieren...

Kann mir da jemand weiterhelfen? Oder kennt jemand der weiter weiß?
Auch gerne gegen eine geringe Entlohnung (ich bin Student und etwas pleite und habe bereits das meiste schon gemacht...auch wenn es nicht zu 100% läuft :d)

Vielen Dank im Voraus
 
Schade, meine Glaskugel ist gerade zur Reparatur :rolleyes:

Es wäre schön,. wenn man mal ein paar Zeilen Code sehen könnte. Woran hängts denn? Fehlermeldungen?
 
Hallo beage,

also Fehler spuckt keine aus, nur beim Ausführen der Mail nach der Auswahl wird kein Foto im Anhang angezeigt nur ein Kästchen mit einem "?"

Ich wollte nicht sofort mit einem Code um die Ecke kommen weil es nicht ganz so wenige Zeilen sind aber ok...
Also das ist im ViewController.h:

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
#import <MobileCoreServices/MobileCoreServices.h>


@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate,UIImagePickerControllerDelegate,
UINavigationControllerDelegate>


@property (strong, nonatomic) IBOutlet UIImageView *imageView;
@property BOOL newMedia;


- (IBAction)useCamera:(id)sender;




- (IBAction)useCameraRoll:(id)sender;


- (IBAction)emailbutton:(id)sender;




@end
 
An welcher Stelle gibst Du das Image mit?
 
bei den (IBAction)useCamera ist ein : (id)sender;

so und das ist im ViewController.m

und das im ViewController.m :


#import "ViewController.h"

@Interface ViewController ()
@end

@implementation ViewController
- (
void)viewDidLoad
{
[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.
}


- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.
}


- (IBAction)useCamera: (id)sender {



if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = @[(NSString *) kUTTypeImage];
imagePicker.allowsEditing = NO;
[self presentViewController:imagePicker
animated:YES completion:nil];
_newMedia = YES;
}
}
- (IBAction)useCameraRoll: (id)sender {


if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = @[(NSString *) kUTTypeImage];
imagePicker.allowsEditing = NO;
[self presentViewController:imagePicker
animated:YES completion:nil];
_newMedia = NO;
}
}

#pragma mark UIImagePickerControllerDelegate

- (
void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSData *pngData = UIImagePNGRepresentation(image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
filePath = [documentsPath stringByAppendingPathComponent:@"myCameraImage.png"];


NSLog(@"saving data at === %@", filePath);
[pngData writeToFile:filePath atomically:YES]; //Write the file

[self.navigationController dismissViewControllerAnimated:YES completion:nil];

}


-(void)image: (UIImage *)image
finishedSavingWithError: (NSError *)error
contextInfo: (void *)contextInfo
{
if (error) {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Save failed"
message: @"Failed to save image"
delegate: nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}


-(void)imagePickerControllerDidCancel: (UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];
}


- (IBAction)emailbutton: (id)sender {
MFMailComposeViewController *mailcontroller = [[MFMailComposeViewController alloc]init]; [mailcontroller setMailComposeDelegate:self];
NSString *adress = @"adress@example.com";
NSArray *adressArray = [[NSArray alloc]initWithObjects:adress, nil];
UIImage *imageView = [UIImage imageNamed:@"%"]; <----- Hier ist glaube ich der
Fehler!
NSData *imageData = UIImagePNGRepresentation(imageView);
[mailcontroller addAttachmentData:imageData mimeType:@"image/png" fileName:@"Name"];
[mailcontroller setMessageBody:@"Message" isHTML:NO];
[mailcontroller setToRecipients:adressArray]; [mailcontroller setSubject:@"Subject"];
[mailcontroller setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:mailcontroller animated:YES completion:nil];


}
-(
void)mailComposeController: (MFMailComposeViewController *)controller didFinishWithResult: (MFMailComposeResult)result error: (NSError *)error {
[self dismissViewControllerAnimated:YES completion:nil];
}

@end
 
Ich seh grad ...

Ja, genau da ist auch der Fehler. imageNamed erwarten halt das Image. Du hast doch schon den Pfad zu Bild.
 
Der ganze Code ist auch sehr konfus. Zusammenkopiert aus dem Netz?
 
Ja wie gesagt ich bin kein super erfahrener Programmierer und habe da was zusammengeschustert. Mit Stackoverflow kann ich nicht wirklich viel Anfangen... Habe gestern schon das komplette Forum von stackoverflow nach einer Lösung durchforstet, die von Anfang bis Ende (auch für Anfänger) beschrieben wird. Aber dort werden nur Code-schnipseln hin und her herum geworfen die man a) nicht wirklich immer versteht und b) für seine Zwecke in das Projekt nicht übernehmen kann...

und Freundlich sind die dort auch nichts so wirklich.
 
Was spuckt dir denn das NSLog(@"saving data at === %@", filePath); aus?
 
Probier mal statt UIImage *imageView = [UIImage imageNamed:mad:"%"];
UIImage *image = [UIImage imageWithContentsOfFile:filePath];
 
Gerade nichts.. 3 Fehler weil es gerade das "filePath" als undeclariert sieht
 
Wo deklarierste Du denn filePath?

Du hast es doch in der Methode - (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info {
...
filePath = [documentsPath stringByAppendingPathComponent:mad:"myCameraImage.png"];
...
}

Du müsstest auch Unmengen von Warnings kriegen, wenn ich mir das da "oben" so ansehe
 
Lad doch das Projekt mal hoch. Ich schau mal rein.
 
Habe es als in der -(void)imageOickerController: (UIImagePickerController *).... als NSString *filePath = [[NSStirng alloc] init]; deklariert.

dann aber eine Methode /* auskomentiert und eine neue hinzugefügt die zwar das Bild in der Vorschau anzeigt aber es nicht in die Email übernimmt.

OK wie kann ich den Ordner anhängen?
 
Habe es als in der -(void)imageOickerController: (UIImagePickerController *).... als NSString *filePath = [[NSStirng alloc] init]; deklariert.

dann aber eine Methode /* auskomentiert und eine neue hinzugefügt die zwar das Bild in der Vorschau anzeigt aber es nicht in die Email übernimmt.

OK wie kann ich den Ordner anhängen?

als zip packen und unten rechts auf "Erweitert"
 
Habe "schnell" mal alles auf Dropbox hochgeladen :)
 
Ich glaube ich habe es irgendwie selbst gelöst bin mir aber nicht ganz sicher....
 
Na so passt es doch. Es funktioniert. Was hast Du denn gemacht? Will jetzt nicht alles durchschauen.

Jetzt noch schick machen ;-)
 
Zurück
Oben Unten