canOpenURL:网址失败:“googlemail:” - 错误:“此应用不允许查询方案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
}
答案 0 :(得分:0)
您的库是在没有bitcode的情况下编译的,但是bitcode选项是 在项目设置中启用。拒绝在你的Bitcode中启用Bitcode 目标构建设置和库构建设置以删除 警告。
对于那些想知道是否需要启用bitcode的人来说:
注意:对于iOS应用,bitcode是默认设置,但是可选。如果您提供bitcode,则应用程序包中的所有应用程序和框架都需要包含bitcode。对于watchOS应用程序,需要bitcode。
参考SO
答案 1 :(得分: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
}