2016-03-04 52 views
0

canOpenURL:URL失败:“googlemail:” - 错误:“该应用程序不允许查询Googlemail方案” 这是所有工作后的错误即时错误..还向信息添加了字符串。项目的plist。Ios Mailcore canopenurl

//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 [email protected]"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 
} 

回答

0

可确定的,如果使用此代码安装在任何类型的应用程序(只需更换customURL显然对于其他应用程序):

 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 
     } 
+0

即时通讯模拟器上运行它。意味着我需要模拟器上的googlemail? –

+0

@Faizan是的,你需要谷歌邮件... –

+0

下载,但仍然得到同样的错误,即使在设备上也 –

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:

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

参考SO

+0

禁用位码 –

+0

我不是后,仍然得到同样的错误得到与位码有关的任何错误。 –

+0

所以最新你的错误..它在我的同样的问题上工作得很好 – viratpuar

相关问题