2011-12-19 36 views
11

Trong ứng dụng của tôi, nếu người dùng đã cung cấp tài khoản gmail của họ thì tôi bắt buộc phải mở ứng dụng thư với thông tin xác thực đăng nhập gmail đến khi chúng tôi chọn tùy chọn thư gmail theo chương trình nhưng nếu tài khoản đó đã được lưu trữ trong thư sau đó tôi bắt buộc phải chuyển hướng người dùng trực tiếp đến tài khoản của họ. Ai có thể pliz cho tôi một cái nhìn thoáng qua về cách tôi có thể đạt được điều này lập trình.Mở ứng dụng thư của iPhone theo lập trình

Trả lời

38

Bạn sẽ không nhận được nhiều quyền kiểm soát đối với ứng dụng Thư khi tất cả các ứng dụng trên iPhone được sandboxed để ngăn chúng khỏi gây rối với các ứng dụng của Apple.

Điều duy nhất bạn có thể làm (nếu bạn muốn mở mail client để gửi email), là một cái gì đó như thế này:

/* 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 và cảm ơn bạn đã trả lời. – user574089

2

Swift:

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

phiên bản Swift của Léon Câu trả lời của 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

Tôi sẽ đề xuất một câu trả lời được cải thiện hơn nhiều. Ứng dụng di động Slack.com thực hiện điều này, nó phát hiện các ứng dụng email phổ biến được liệt kê trên thiết bị và hiển thị bộ chọn bật lên của ứng dụng email 'mà' bạn muốn mở.

Vì vậy, để thực hiện:

  1. Google xung quanh để tìm ra 10 email khách hàng hàng đầu (ví dụ như Mail, Google Inbox, OutLook, đường hàng không vv).

  2. Nhận danh sách các ứng dụng đã cài đặt trên điện thoại bằng cách tìm kiếm tất cả ứng dụng (nhưng tôi đã nói bạn chỉ có thể tìm thấy nếu ứng dụng được cài đặt rõ ràng, vì vậy bạn sẽ cần phát hiện ứng dụng).

  3. Hiển thị danh sách bật lên nếu phát hiện hơn 1 ứng dụng email, yêu cầu ứng dụng đó mở ứng dụng nào. Thư, Hộp thư đến.

Đây là giải pháp tốt nhất mà tôi đã xem xét đến nay.

Các vấn đề liên quan