Ios Mailcore canopenurl

Ios Mailcore canopenurl

canOpenURL:URL 失败:"googlemail:" - 错误:"This app is not allowed to query for scheme googlemail" 这是我在完成所有工作后遇到的错误。还向项目的 info.plist 添加了字符串。

   //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
}

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:

注意:对于 iOS 应用,位码是默认值,但可选。如果您提供 bitcode,则应用程序包中的所有应用程序和框架都需要包含 bitcode。对于 watchOS 应用,需要 bitcode。

参考

您可以使用此代码确定是否安装了任何类型的应用程序(只需为其他应用程序明显替换自定义 URL):

        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
        }