2011-12-19 12 views
11

En mi aplicación, si el usuario dio su cuenta de gmail entonces estoy obligado a abrir el cliente de correo con las credenciales de inicio de sesión de Gmail que aparece cuando seleccionamos la opción de correo gmail programáticamente pero si esa cuenta ya está almacenado en el correo, entonces estoy obligado a redirigir al usuario directamente a su cuenta. ¿Alguien puede darme un vistazo de cómo puedo lograr esto programáticamente?Cliente de correo abierto de iPhone programáticamente

Respuesta

38

No tendrá tanto control sobre la aplicación de correo ya que todas las aplicaciones en el iPhone están en la zona de pruebas para evitar que se mezclen con las aplicaciones de Apple.

La única cosa que puede hacer (si desea abrir el cliente de correo para enviar un correo electrónico), es algo como esto:

/* create mail subject */ 
NSString *subject = [NSString stringWithFormat:@"Subject"]; 

/* define email address */ 
NSString *mail = [NSString stringWithFormat:@"[email protected]"]; 

/* define allowed character set */ 
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet]; 

/* create the URL */ 
NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"mailto:?to=%@&subject=%@", 
                         [mail stringByAddingPercentEncodingWithAllowedCharacters:set], 
                         [subject stringByAddingPercentEncodingWithAllowedCharacters:set]]];  
/* load the URL */ 
[[UIApplication sharedApplication] openURL:url]; 

/* release the URL. If you are using ARC, remove this line. */ 
[url release]; 
+0

OK y gracias por responder. – user574089

2

Swift:

 if let url = NSURL(string: "mailto://\(email)") { 
      UIApplication.sharedApplication().openURL(url) 
     } 
2

versión Swift de Léon La respuesta de Rodenburg:

// define email address 
    let address = "[email protected]" 

    // create mail subject 
    let subject = "Subject" 

    // create the URL 
    let url = NSURL(string: "mailto:?to=\(address)&subject=\(subject)".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!) 

    // load the URL 
    UIApplication.sharedApplication().openURL(url!) 
0

Sugeriría una respuesta mucho más mejorada. La aplicación móvil Slack.com hace esto, detecta los clientes comunes de correo electrónico enumerados en el dispositivo y muestra un selector emergente de "qué" cliente de correo electrónico le gustaría abrir.

que apliquen:

  1. Google alrededor para encontrar los 10 principales clientes de correo electrónico (por ejemplo, correo, Google Bandeja de entrada, Outlook, el correo aéreo, etc.).

  2. Obtenga una lista de las aplicaciones instaladas en el teléfono buscando todas las aplicaciones (pero me dicen que ahora solo puede encontrar si una aplicación está instalada explícitamente, por lo que necesitará detectarla).

  3. Mostrar una lista emergente si se detecta más de 1 aplicación de correo electrónico, solicitándoles "qué" aplicación abrir, por ejemplo. Correo, Bandeja de entrada.

Esta es la mejor solución que he visto trabajar hasta la fecha.

Cuestiones relacionadas