How to add own main in iphone mail

To add your own mail client as the default mail app on an iPhone, you'll need to create a custom URL scheme and handle the MFMailComposeViewController delegate methods. Here's a step-by-step guide to help you achieve this:

Step 1: Create a custom URL scheme

In your app's Info.plist file, add a new key called CFBundleURLTypes with an array of dictionaries. Each dictionary should contain a CFBundleURLSchemes key with a string value that represents your custom URL scheme. For example:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp://</string>
        </array>
    </dict>
</array>

This will allow your app to handle URLs that start with myapp://.

Step 2: Handle the MFMailComposeViewController delegate methods

In your app's delegate class, implement the MFMailComposeViewControllerDelegate protocol and handle the mailComposeController:didFinishWithResult:error: method. This method will be called when the user finishes composing an email.

Here's an example implementation:

import MessageUI

class MyMailDelegate: NSObject, MFMailComposeViewControllerDelegate {
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        // Handle the result and error
        switch result {
        case.sent:
            print("Email sent successfully!")
        case.failed:
            print("Error sending email: \(error?.localizedDescription?? "")")
        case.cancelled:
            print("Email composition cancelled")
        default:
            print("Unknown result")
        }
    }
}

Step 3: Present the MFMailComposeViewController

When the user taps the "Compose" button in your app, present the MFMailComposeViewController using the present method:

let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = MyMailDelegate()
mailComposer.setSubject("My App Email")
mailComposer.setMessageBody("Hello from my app!", isHTML: false)
present(mailComposer, animated: true, completion: nil)

Step 4: Set your app as the default mail app

To set your app as the default mail app, you'll need to add a new key to your app's Info.plist file called LSHandlerRank. Set its value to First to indicate that your app should be the default handler for the custom URL scheme:

<key>LSHandlerRank</key>
<string>First</string>

Step 5: Test your app

Run your app on a physical iPhone or simulator and test the email composition feature. When you compose an email, your app should handle the MFMailComposeViewController delegate methods and present the email composition interface.

Note: To set your app as the default mail app, you'll need to add a new key to your app's Info.plist file called CFBundleURLName. Set its value to a unique string that represents your app's name:

<key>CFBundleURLName</key>
<string>My App</string>

This will allow your app to be listed as a default mail app in the Settings app.

By following these steps, you should be able to add your own mail client as the default mail app on an iPhone.