0

canOpenURL: failed for URL: "googlemail:" - error: "This app is not allowed to query for scheme googlemail" this is the error im getting after all the work.. also added string to info.plist of project.

   //Convert the image into data
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(self.emailimage)];
//Create a base64 string representation of the data using NSData+Base64
NSString *base64String = [imageData base64EncodedString];

//userdefaults
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// getting an NSString
NSString *userName = [prefs stringForKey:@"username"];
NSString *password = [prefs stringForKey:@"password"];

//email operation strat
MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init];

smtpSession.hostname =@"smtp.gmail.com";
//
smtpSession.port = 465;

smtpSession.username =userName;
smtpSession.password =password;
smtpSession.authType = MCOAuthTypeSASLPlain;
smtpSession.connectionType =MCOConnectionTypeStartTLS;

MCOMessageBuilder *builder = [[MCOMessageBuilder alloc] init];
MCOAddress *from1 = [MCOAddress addressWithDisplayName:@""
                                               mailbox:userName];
MCOAddress *to1 = [MCOAddress addressWithDisplayName:nil
                                            mailbox:self.to.text];
[[builder header] setFrom:from1];
[[builder header] setTo:@[to1]];
[[builder header] setSubject:self.subject.text];
NSDate *now = [NSDate date];

 double seconds1 = [now timeIntervalSince1970];
NSNumber *seconds = [NSNumber numberWithInteger:seconds1];
NSLog(@"id is=======================%@",seconds);
AppDelegate *tokenD = [[UIApplication sharedApplication]delegate];
  NSLog(@"token in Composeviewcontroller %@",tokenD.Dtoken);
NSString *htmlbody1;


[builder setHTMLBody:htmlbody1];
MCOAttachment *attachment = [MCOAttachment attachmentWithContentsOfFile:self.filename];
[builder addAttachment:attachment];

NSData * rfc822Data = [builder data];


MCOSMTPSendOperation *sendOperation =
[smtpSession sendOperationWithData:rfc822Data];
[sendOperation start:^(NSError *error) {
    if(error) {

        NSLog(@"Error sending email: %@", error);
    }

    else {

        NSLog(@"Successfully sent email!");
    }
}];

//coredata

NSManagedObjectContext *context = [self managedObjectContext];

if (self.emailInfo) {
    [self.emailInfo setValue:self.to.text forKey:@"email_to"];
    [self.emailInfo setValue:self.subject.text forKey:@"email_sub"];
    [self.emailInfo setValue:self.htmlbody.text forKey:@"email_body"];
    [self.emailInfo setValue:seconds forKey:@"email_id"];
    [self.emailInfo setValue:@"sent" forKey:@"status"];
    [self.emailInfo setValue:seconds forKey:@"email_id"];
} else {

    NSManagedObject *newEmail = [NSEntityDescription insertNewObjectForEntityForName:@"EmailInfo" inManagedObjectContext:context];

    [newEmail setValue:self.to.text forKey:@"email_to"];
    [newEmail setValue:self.subject.text forKey:@"email_sub"];
    [newEmail setValue:self.htmlbody.text forKey:@"email_body"];
    [newEmail setValue:seconds forKey:@"email_id"];
    [newEmail setValue:@"sent" forKey:@"status"];
    [newEmail setValue:seconds forKey:@"email_time"];

}


NSError *error = nil;

if (![context save:&error]) {
    NSLog(@"%@ %@", error, [error localizedDescription]);
}

[self.navigationController popViewControllerAnimated:YES];
// Fetching



// Do any additional setup after loading the view.
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:/me/account"]];
NSString *gmailurl = [NSString stringWithFormat:@"googlemail:"];
NSURL *openURL = [NSURL URLWithString:gmailurl];
// googlegmail:///co?to={email}&subject={subject}&body={body}
if ([[UIApplication sharedApplication] canOpenURL:openURL]) {
    [[UIApplication sharedApplication] openURL:openURL];// launch it
}

2 Answers2

0

Your library was compiled without bitcode, but the bitcode option is enabled in your project settings. Say NO to Enable Bitcode in your target Build Settings and the Library Build Settings to remove the warnings.

For those wondering if enabling bitcode is required:

Note: For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and frameworks in the app bundle need to include bitcode. For watchOS apps, bitcode is required.

refer SO

Community
  • 1
  • 1
viratpuar
  • 524
  • 1
  • 5
  • 22
  • so whats your error..it's worked fine for me on same issue – viratpuar Mar 04 '16 at 11:35
  • always getting this error canOpenURL: failed for URL: "googlemail:" - error: "This app is not allowed to query for scheme googlemail" – Faizan Ullah Mar 04 '16 at 11:36
  • and after that Error sending email: Error Domain=MCOErrorDomain Code=1 "A stable connection to the server could not be established." UserInfo={NSLocalizedDescription=A stable connection to the server could not be established.} ' – Faizan Ullah Mar 04 '16 at 11:37
0

You can determinate if any kind of application is installed using this code (just replace customURL obviously for an other apps):

        NSString *customURL = @"googlegmail://";

        if ([[UIApplication sharedApplication] 
        canOpenURL:[NSURL URLWithString:customURL]])
        {
          [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
        }
        else
        {
          //not installed, show popup for a user or an error
        } 
Vignesh Kumar
  • 598
  • 4
  • 11