iOS-mail — ProtonMail iOS client app

Overview

iOS-mail

Introduction

iOS-mail — ProtonMail iOS client app

The app is intended for all users of the ProtonMail service. Whether they are paid or free, they can compose and read emails, manage folders and labels, manage some account settings and create a new account. The app supports iOS 11-14.

License

The code and data files in this distribution are licensed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See https://www.gnu.org/licenses/ for a copy of this license.

See LICENSE file

Table of Contents

Architecture

MVVM-C with services. Model-View-ViewModel architecture, plus the Coordinator pattern.

Dependencies

Internal

Third Party

Acknowledgements

Content Explanation

Setup

  1. Have macOS up to date and install Xcode 11.1
  2. We use xUnique (ver 4.1.4) in order to prevent merge conflicts in the ProtonMail.xcodeproj file. Each shared scheme has a post-build action, and builds will fail on machines with no xUnique installed. Please follow xUnique's installation instructions
  3. DOMPurify(@b06b6b2ac8) and Cocoapods are pre-downloaded. We are using git submodules for tracking DOMPurifier, so after cloning you have to run git submodule init and git submodule update to fetch it. Theory here: https://git-scm.com/book/en/v2/Git-Tools-Submodules
  4. Open ProtonMail/ProtonMail.xcworkspace and click the run button

Live version

Current live version 1.11.13

Articles

Our Team

TODO

  • UI redesign
  • multiple user support
  • share frameworks
Comments
  • Local compilation

    Local compilation

    Can I clone the project successfully compiled with XCode11.2 locally? Follow the prompts to run the project,I am getting the following error when compiling: No such module 'EllipticCurveKeyPair' BioProtection.swift and Command CompileSwift failed with a nonzero exit code

    opened by 1094093288 5
  • added an in-app browser option to open links in SVC

    added an in-app browser option to open links in SVC

    This fixes a second thing that I was missing in ProtonMail from the beginning: being able to open any links from emails in an in-app browser (Safari View Controller) instead of always being redirected to the Safari app. Honestly, with just these two changes (this & easy archiving) I would probably be using this app on my iPhone much, much more than I am now.

    This is implemented as a new "virtual" browser in the LinkOpener browser list, which is always installed. MessageBodyCoordinator.open(url:) adds a special case for when this option is set.

    Similar caveats apply as in #4 - feel free to change the wording, design, and I'm not sure if the settings system requires any special handling for this case (although it seems to remember the setting on relaunch now - the code was simpler than in #4 because I reused an existing setting instead of adding a new property).

    opened by mackuba 4
  • No priority support for PRO customers

    No priority support for PRO customers

    I am a PRO customer, I can no longer send an email from my professional email address because address was blocked by protonmail. My professional activity is paralyzed. I made a request for support it 72 hours and I received no response. Is that what you call Priority Support for PRO customers? Here is the ticket number 940607

    opened by githubcom13 2
  • Offer ability to be default Mail app

    Offer ability to be default Mail app

    The new iOS 14 release allows the setting of a default Mail app. ProtonMail iOS does not currently support this feature but it would be great to have.

    opened by lazzurs 2
  • Protonmail grabs paste buffer on entering an address in compose mode

    Protonmail grabs paste buffer on entering an address in compose mode

    Describe the bug: ProtonMail grabs the current paste buffer when trying to enter an email address in compose mode.

    Live App Version: AppVersion: 1.11.17 LibVersion: 1.0.5

    Device + OS version iPhone 11 Pro iOS 14 beta 2

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Put something into the paste buffer
    2. Open ProtonMail
    3. Compose a message
    4. Enter anything in the To: field
    5. Paste buffer is grabbed

    Expected behavior The paste buffer only being read as an address is pasted and not before.

    Screenshots image

    opened by lazzurs 2
  • URL Scheme for opening mailto: links

    URL Scheme for opening mailto: links

    Is your feature request related to a problem? Please describe. I'd like to use ProtonMail as my default mail application -- it's my primary email account, and it's inconvenient for me to have to open a mailto: link in Apple Mail, and then copy the address over to ProtonMail.

    Describe the solution you'd like A description of the URL scheme ProtonMail uses in order to leverage Evil Scheme (source) to correctly route mailto: links to the ProtonMail application.

    Describe alternatives you've considered Adapting the url described here to protonmail://secure/start?action=compose&to=.

    Additional context Evil Scheme is a tweak for jailbroken iPhones that allows the "replacement" of default apps by hijacking the url scheme system, and using regular expressions to capture the relevant information and pass them along. For example, configuration for replacing Apple Mail with GMail is:

    | | Source | Target | |---|---|---| | Bundle ID | com.apple.mobilemail | com.google.GMail | | Regex | ^mailto:[^?]*$ | googlegmail://co?to={capture group} | | Regex | ^mailto:.*?.*$ | googlegmail://co?to={group 1}&{group 2} |

    So some translations would look like (with the @ removed to kill GitHub's hyperlinking):

    mailto:hey[at]cass.love => googlemail://co?to=hey[at]cass.love mailto:hey[at]cass.love?subject=Hey! => googlemail://co?to=hey[at]cass.love&subject=Hey!

    I'd like to understand what (if it exists) the URL scheme is for generating a new email in ProtonMail is. I thought there might be one because of the "Compose" action when long pressing the icon. Essentially, my target is to fill in the missing information here:

    | | Source | Target | |---|---|---| | Bundle ID | com.apple.mobilemail | ch.protonmail.protonmail | | Regex | ^mailto:[^?]*$ | ???{capture group} | | Regex | ^mailto:.*?.*$ | ???{group 1}&{group 2} |

    Let me know if this is not the right place to submit this, and I'll gladly nose around elsewhere. Thank you for your time!

    opened by caass 2
  • Add an in-app browser (Using WKWebView)

    Add an in-app browser (Using WKWebView)

    Is your feature request related to a problem? Please describe. There should be an option to have an in-app browser in the ProtonMail app so you can quickly view and exit from a website within the app.

    Describe the solution you'd like You can use the WKWebView API to accomplish this.

    Describe alternatives you've considered I don't have any alternatives.

    Additional context I don't have any additional information.

    opened by mg8973 2
  • No priority support for PRO customers

    No priority support for PRO customers

    I am a PRO customer, I can no longer send an email from my professional email address because my IP address was blocked by protonmail. My professional activity is paralyzed. I made a request for support it 48 hours and I received no response. Is that what you call Priority Support for PRO customers? Here is the ticket number 940607

    opened by githubcom13 1
  • Disable alternative routing bug

    Disable alternative routing bug

    Describe the bug: In Settings -> Networking when you turn off "Allow alternative routing" then you close the app and reopen, the setting returns to turned on.

    Live App Version: 1.12.0 (4458)

    Device + OS version iPhone - iOS 13.6

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Turn off ""Allow alternative routing""
    2. Close ProtonMail app
    3. Reopen

    Expected behavior The settings and changes you are making to stay.

    Thank you

    opened by th3m 1
  • Compose email recepient field constantly scans clipboard

    Compose email recepient field constantly scans clipboard

    With the new iOS 14 update, the banner that "ProtonMail pasted from the clipboard" appears at every keystroke while typing in a recepient email adress.

    I understand that it is normal behaviour to automatically paste from clipboard but I would rather not have this feature, especially not in its current form.

    This behaviour does not exist anywhere in the app as far as I have seen, and nowhere outside of the recipient field while composing a new message.

    opened by what-name 1
  • Face ID Bug on iOS 13.5

    Face ID Bug on iOS 13.5

    Describe the bug: When I use Face ID to sign in to the app, it stays stuck to the Face ID screen after authentication.

    Live App Version: 1.11.16

    Device + OS version iPhone X iOS 13.5.

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Click on app
    2. Use Face ID to sign in

    Expected behavior After authentication the app will move to my inbox.

    Screenshots(If applicable)

    opened by KnownStormChaser 1
  • GitHub links don’t open in the native GitHub iOS app

    GitHub links don’t open in the native GitHub iOS app

    Describe the bug: GitHub links in emails don’t open in native GitHub iOS app but inside Brave browser (default).

    Live App Version: 4.1.1 (7303)

    Device + OS version iPhone with iOS 16.1.1.

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Receive GitHub notifications in ProtonMail
    2. Click on either "View it on GitHub" or "unsubscribe" link
    3. Expect to open inside native GitHub iOS app
    4. Actually opens the link inside the browser which is set as default

    Expected behavior I would expect ProtonMail to detect that I have the GitHub app installed and open links there, which has a better user experience and responsiveness compared to the mobile web version.

    Screenshots(If applicable)

    Screenshot from 2022-12-03 13-23-09

    opened by mcmxcdev 0
  • Auto -recognising events on ProtonMail iOS

    Auto -recognising events on ProtonMail iOS

    Is your feature request related to a problem? Please describe. No, It Is a new functionality.

    Describe the solution you'd like It would be nice to have the possibility of auto-add an event in our ProtonCalendar directly from ProtonMail with a simple touch. Similarly to Apple's Mail, events would be matched and the date, time and description would be send to ProtonCalendar.

    Describe alternatives you've considered The flow would be simple (I suppose). The user receives an event, the date and time of event would be matched (NLP for example, I don't how complicated could be to add this with Swift), after all content be matched a post request is send to ProtonCalendar.

    Additional context https://support.apple.com/en-il/guide/mac-help/mh35744/mac

    opened by DaniloSouzza 0
  • IOS app is falsely claiming signage

    IOS app is falsely claiming signage

    Describe the bug: When using a third-party (open standard) PGP client to send encrypted (not signed) mail to a Protonmail address, using the corresponding Protonmail public key for encryption; The IOS app on the receiving end will claim "PGP-encrypted and signed message" even though the message is only encrypted and not signed.

    This claim is made in the little encryption status icon (green padlock) in the "From" field.

    In the webapp the icon will correctly claim "PGP-encrypted message"

    Live App Version: 4.0.7

    Device + OS version iPhone 11 iOS 16.

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Set up third party PGP client and import a Protonmail public key
    2. Send mail to address using corresponding Protonmail public key. Do encrypt message, do NOT sign message.
    3. The IOS app will claim both encrypted and signed.

    Expected behavior The IOS app should claim "Encrypted", "Signed" or "Encrypted and Signed" depending on the situation, as is the case in the webapp.

    opened by Plosie 0
  • Swipe gestures inconsistent

    Swipe gestures inconsistent

    Describe the bug: The swipe gestures between iOS and iPadOS are inconsistent. On iOS swiping from left to right on a message moves it to Spam, on iPadOS the same gesture moves it to Trash.

    These should be consistent between devices.

    Live App Version: 4.0.6

    Device + OS version iPad Pro (2021) iPadOS 15.7 iPhone 14 Pro Max, iOS 16.0.1

    Can you reproduce the problem each time? Yes

    Steps to reproduce the behavior:

    1. Swipe a message from left to right on both devices

    Expected behavior

    It's the same between devices since I can't count how many times I trashed/spammed something by accident now.

    Screenshots(If applicable)

    opened by KDederichs 0
  • 'Load remote content' and 'Unsubscribe from mailing list' buttons too close to each other

    'Load remote content' and 'Unsubscribe from mailing list' buttons too close to each other

    Is your feature request related to a problem? Please describe. A 'Load remote content' and 'Unsubscribe from mailing list' buttons are too close to each other, resulting receiver unwittingly removing themselves from the mailing-list upon accidentally missing the 'Load remote content' button on a click. I have accidentally unsubscribed from several mailing lists due to fat finger error.

    Describe the solution you'd like Move the 'Unsubscribe from the mailing list' button on top, as in first item in the header (above senders's information), like in iOS Mail app (screenshot attached).

    Describe alternatives you've considered Prompt the user with the confirmation asking if they really want to unsubscribe from the given mailing list.

    Additional context See screenshots attached for a better reference.

    IMG_D93ADE495D30-1 IMG_A4B65FB84AF7-1

    opened by ArturAronov 1
  • Not able to Login in the new update

    Not able to Login in the new update

    Not able to login in the new Update I was trying to login after a successful sign-up but unfortunately the new update is not letting me to do so. It's throwing an error Removed main key from memory and after that the login screen is getting presented. This problem was not there in the old version. Not sure what happened!

    Live App Version: 3.1.5

    Device + OS version Simulator: iPhone SE (iOS 15.4)

    Can you reproduce the problem each time? Yes

    opened by sohamb1390 0
Owner
null
Colloquy is an advanced IRC, SILC & ICB client for macOS and iOS!

Colloquy Dependencies This repository uses git submodules for some of its dependencies, so you will have to check those out as well. You can do this f

Colloquy 175 Jan 7, 2023
A glossy Matrix collaboration client for iOS

Element iOS Element iOS is an iOS Matrix client provided by Element. It is based on MatrixKit and MatrixSDK. Beta testing You can try last beta build

Element 1.5k Jan 1, 2023
Free Jabber/XMPP client for iOS and macOS

Monal A cross platform, modern XMPP client for iOS and MacOS This is the Monal XMPP client as found in the app store. If you want to use the latest st

Monal 400 Jan 5, 2023
Mumble client for iOS-based devices

Mumble for iOS (iPhone, iPod touch and iPad) Note: This repo and the app for iOS are unmaintained. If you are interested in taking over development of

Mumble 185 Nov 18, 2022
Legacy mobile Rocket.Chat client in Swift for iOS

IMPORTANT: PLEASE READ THIS FIRST Rocket.Chat mobile is moving to React Native. Development on this repository by Rocket.Chat has now ceased. If your

Rocket.Chat 1k Dec 22, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
Tinodios: Tinode Messaging Client for iOS

Tinodios: Tinode Messaging Client for iOS iOS client for Tinode in Swift. Status: beta. Usable and mostly stable but bugs may happen. Getting support

Tinode 173 Jan 5, 2023
A Swift client for Supabase Realtime server.

realtime-swift Listens to changes in a PostgreSQL Database and via websockets. A Swift client for Supabase Realtime server. Usage Creating a Socket co

Supabase Community 35 Dec 1, 2022
Secret Messenger - a free and open source Jabber (XMPP) messaging client for Apple

Secret Messenger is a free and open source Jabber (XMPP) messaging client for Apple and Android devices focused on Privacy and Security with full OMEMO encrypted messaging support.

Secret Messenger 4 May 2, 2022
Chat-App - GV Chat App is an iOS app built with Swift

GV Chat App - iOS Explore the docs » Report Bug · Request Feature About The Proj

Cyrus Dumbwani 0 Jan 25, 2022
🌟🌟🌟🌟🌟 Falcon Messenger is a Fast and Beautiful cloud-based messaging app. With iOS and IPadOS Support. Available on the App Store.

Open the FalconMessenger.xcworkspace in Xcode. Change the Bundle Identifier to match your domain. Go to Firebase and create new project. Select "Add F

null 397 Dec 31, 2022
A native iOS video chat app based on WebRTC

AppRTC - iOS implementation of the Google WebRTC Demo About This Xcode project is a native wrapper for the Google's WebRTC Demo. It organizes the WebR

ISBX 1.3k Dec 31, 2022
IRCCloud iOS App

The official iOS app for IRCCloud.com Chat on IRC from anywhere, and never miss a message. All your chats and logs are stored in the cloud. Access the

IRCCloud Ltd. 259 Dec 18, 2022
iOS - Real-time messaging app 🎨

General mChat is a real-time messaging app written in Swift for iOS devices. Since mChat uses a fast and reliable Firebase Database, it receives data

Vitaliy Paliy 569 Nov 28, 2022
A chat textbar for iOS inspired in whatssap app

ECMagicBar [![CI Status](https://img.shields.io/travis/Eduard Calero/ECMagicBar.

Eduard Calero 0 Dec 30, 2021
Open-Source Messaging App

Acani Chats Open-Source Native iOS Messages App This project and its submodules no longer work and are no longer being maintained. Acani Chats is an i

Acani 2.1k Dec 21, 2022
Mobile app for Chatwoot - React Native

Mobile app for chatwoot platform. Built with React Native Chatwoot is an opensource alternative to Intercom, Zendesk, Drift, Crisp etc. Supported Chat

Chatwoot 388 Dec 28, 2022
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 369 Nov 26, 2022
Real time chat app written in Swift 5 using Firebase

Quick Chat for iOS Quick Chat for iOS is a real time chat app written in Swift 5 using Firebase. Quick Chat allows to send and receive text messages,

Henry Aslanyan 1.8k Dec 10, 2022