2015-08-20 13 views
9

Próbuję wysłać e-mail z mojej aplikacji. Ale chcę, aby użytkownik korzystał z aplikacji Gmail na swoim telefonie, a następnie powinien wysłać pocztę za jego pomocą. Jeśli aplikacja Gmail jest niedostępna, należy przekierować użytkownika do skrzynki pocztowej.Otwórz aplikację Gmail z mojej aplikacji

Skąd mogę wiedzieć, czy użytkownik zawiera aplikację Gmail i jak mogę ją przekierować.

+0

http://stackoverflow.com/a/19281934/2500457 pomoże – iphondroid

Odpowiedz

10

Musisz użyć niestandardowego schematu URL. Dla aplikacji Gmail jej:

googlegmail:// 

Jeśli chcesz utworzyć wiadomość nie można dodać więcej parametrów do tego adresu URL:

co?subject=Example&body=ExampleBody 

Można zdeterminowany jeśli jakakolwiek aplikacja jest instalowana przy użyciu tego kodu (wystarczy wymienić customURL oczywiście dla innej aplikacji):

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

Czy potrafisz zdefiniować sposób dołączania obrazu? –

+0

Działa to bardzo dobrze, ale co jeśli chcę dodać parametr "Do:" oznacza, w jaki sposób mogę dodać identyfikator e-maila, którego chcę wysłać pocztą, tak jak dodajesz temat i treść? –

+2

@YuvrajSinh można dodać w ten sposób: '" googlegmail: /// co? [email protected]&subject=Hello&body=Hi "' – silvansky

11

Instalatora iOS9 +

Jak wyjaśniono here, jeśli jesteś na iOS9 +, nie zapomnij dodać googlegmail do LSApplicationQueriesSchemes na info.plist

my info.plist

Kodeksu otworzyć GMail

Następnie można zrobić to samo jako zaakceptowana odpowiedź (poniżej jest moja szybka wersja 2.3):

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

To działa! Dziękuję bardzo. –

+0

iOS 11: działa bez dodawania schematu do własnej aplikacji. Możesz także dodać argument "to": "googlegmail: /// co? [email protected]&subject=Hello&body=Hi" ' – silvansky

+1

@silvansky, czy wiesz, jak przekazać ciało z wieloma liniami? Mam na myśli, w tym nową linię? Więc zamiast "Cześć" jest "Cześć!" następnie "Cześć" w nowej linii. – user2908517

Powiązane problemy