2015-08-20 2 views
9

J'essaie d'envoyer un e-mail depuis mon application. Mais ce que je veux, c'est que si l'utilisateur a une application Gmail sur son téléphone, alors le courrier devrait être envoyé en l'utilisant. Si l'application Gmail n'est pas disponible, l'utilisateur doit être redirigé vers Mailbox. Comment puis-je savoir si l'utilisateur contient l'application Gmail et comment puis-je rediriger l'utilisateur vers cette application.Ouvrir l'application Gmail depuis mon application

+0

http://stackoverflow.com/a/19281934/2500457 aidera – iphondroid

Répondre

10

Vous devez utiliser un schéma d'URL personnalisé. Pour l'application gmail son:

googlegmail:// 

Si vous voulez composer un message là, vous pouvez ajouter plus de paramètres à cette URL:

co?subject=Example&body=ExampleBody 

Vous pouvez d'une durée déterminée si tout type d'application est installée en utilisant ce code (il suffit de remplacer customURL évidemment pour une autres applications):

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

Pouvez-vous définir un moyen de joindre une image? –

+0

Cela fonctionne très bien, mais si je veux ajouter le paramètre de "To:" signifie comment puis-je ajouter l'email que je veux envoyer le courrier comme vous ajoutez l'objet et le corps? –

+2

@YuvrajSinh vous pouvez l'ajouter comme suit: '" googlegmail: /// co? [email protected]&subject=Hello&body=Hi "' – silvansky

11

Setup pour iOS9 +

Comme expliqué here, si vous êtes sur iOS9 +, ne pas oublier d'ajouter à googlegmailLSApplicationQueriesSchemes sur votre info.plist

my info.plist

Code pour ouvrir GMail

Ensuite, vous pouvez faire la même chose comme la réponse acceptée (ci-dessous est ma version 2.3 rapide):

let googleUrlString = "googlegmail:///co?subject=Hello&body=Hi" 
if let googleUrl = NSURL(string: googleUrlString) { 
    // show alert to choose app 
    if UIApplication.sharedApplication().canOpenURL(googleUrl) { 
     if #available(iOS 10.0, *) { 
      UIApplication.sharedApplication().openURL(googleUrl, options: [:], completionHandler: nil) 
     } else { 
      UIApplication.sharedApplication().openURL(googleUrl) 
     } 
    } 
} 
+0

Cela fonctionne! Merci beaucoup. –

+0

iOS 11: cela fonctionne sans ajout de schéma à votre propre application. Aussi, vous pouvez ajouter l'argument 'to':' "googlegmail: /// co? To = [email protected]&subject=Hello&body=Hi" ' – silvansky

+1

@silvansky, savez-vous comment passer le corps de plusieurs lignes? Je veux dire, y compris la nouvelle ligne? Donc, au lieu de "Salut" c'est "Salut!" puis "Bye" sur la nouvelle ligne. – user2908517