Search code examples
iosimagewhatsappuidocumentinteraction

Whatsapp Image sharing not working


My class implements the UIDocumentInteractionControllerDelegate and I have the following property:@property (nonatomic,retain) UIDocumentInteractionController * documentInteractionController;

if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"whatsapp://app"]]) {
    UIImage     *iconImage = [UIImage imageNamed:@"bg_iPhone_5.jpg"];
    NSString    *savePath  = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/whatsAppTmp.wai"];

    [UIImageJPEGRepresentation(iconImage, 1.0) writeToFile:savePath atomically:YES];
    _documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:savePath]];
    _documentInteractionController.UTI = @"net.whatsapp.image";
    _documentInteractionController.delegate = self;
    [_documentInteractionController presentOpenInMenuFromRect:CGRectMake(0, 0, 0, 0) inView:self.view animated: YES];
}
else {
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}

Hi I have used this code But Image sharing is not working. DocumentInteractionController launches a screen with whatsapp icon and when I click on it my app crashes.


Solution

  • Here is code with the correct way to setup the URL for writing out the temp image:

    if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"whatsapp://app"]]) {
        NSError *error = nil;
        NSURL *documentURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:&error];
        if (!documentURL) {
            NSLog(@"Error getting doucment directory: %@", error);
        }
    
        NSURL *tempFile = [documentURL URLByAppendingPathComponent:@"whatsAppTmp.wai"];
        UIImage *iconImage = [UIImage imageNamed:@"bg_iPhone_5.jpg"];
    
        NSData *imageData = UIImageJPEGRepresentation(iconImage, 1.0) ;
        if (![imageData writeToURL:tempFile options:NSDataWritingAtomic error:&error]) {
            NSLog(@"Error writing File: %@", error);
        }
    
        self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:tempFile];
        self.documentInteractionController.UTI = @"net.whatsapp.image";
        self.documentInteractionController.delegate = self;
        [self.documentInteractionController presentOpenInMenuFromRect:CGRectMake(0, 0, 0, 0) inView:self.view animated: YES];
    }
    else {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
    }