Phantom Anonymous Messenger for iOS

Overview

πŸ‘» Phantom for iOS

This repository contains the complete source code of Phantom for iOS.

Table of Contens

πŸ›  Report Bugs/Feature Requests/Security Issues

To report bugs and request new features, please contact the Phantom support team.

If you find a security issue in Phantom, please follow responsible disclosure and report it to us via Phantom or by encrypted email, we will try to respond as quickly as possible. You can find the contact details at phantom.org/contact (section "Security").

βš™ Source Code Release Policy

This source code repository will be updated for every public non-beta release. There will be one commit per released version.

Commits are signed using PGP. See SECURITY.md for more information.

πŸ“– License Checks

While the source code for Phantom for iOS is published under an open source license, Phantom is still a paid app. To run the app in combination with our official server infrastructure, you must have bought a license on the App Store.

The app uses two different license check types, depending on the target app:

πŸ“» App Store Licensing

When creating a new Phantom ID using the Phantom app bought on the App Store, the app sends the digitally signed App Store receipt to the directory server. This allows the server to verify that you have indeed bought the app, without being able to identify you.

This means that a self-compiled app using the Phantom scheme cannot be used to create a new Phantom ID. You can, however, use an app that was purchased in the App Store to create an ID and then export a backup. This backup can then be imported into the self-compiled app.

Note that the ID creation endpoint is monitored for abuse.

πŸ”§ Phantom Work

If you build the Phantom Work target, credentials from the Phantom Work subscription must be provided in order to use the app.

⌨ Schemes

  • Phantom builds and tests the consumer app. (recommended for local testing)
  • PhantomWork builds and tests the enterprise version of our app.

Building

To get started you need a Mac, Xcode (12.2) and a (free) Apple Developer Account.

1. Install Dependencies

  1. Install Carthge

brew install carthage

  1. If your Xcode installation is fresh make sure that command line tools are selected

sudo xcode-select --switch /Applications/Xcode.app

  1. Install and build the dependencies

./scripts/build.sh --dependencies

This checks out and builds Carthage dependencies, and downloads debug & release WebRTC binaries and SaltyRTC if they are missing. (The script uses a workaround for limitations of Carthage with Xcode 12 If you want to build WebRTC yourself see BUILD_WEBRTC.md.)

2. Setup Project

You can either build the Threema app (recommended) or Threema Work app.

Note: These setups are for running in the simulator.

Threema (recommended) Open Threema.xcproject in Xcode Repeat these steps for the Threema and ThreemaShareExtension target Check "Automatically manage signing" and confirm it ("Enable Automatic") Set "Team" to the team of your developer account Choose Threema as scheme and a simulator Threema Work Open Threema.xcproject in Xcode Repeat these steps for the Threema Work and ThreemaForWorkShareExtension target Check "Automatically manage signing" and confirm it ("Enable Automatic") Set "Team" to the team of your developer account Choose Threema Work as scheme and a simulator 3. Build and Run Build and Run To create a Threema ID see "App Store Licensing" above. (You can cancel the "Sign in with Apple ID" dialogue and import a Threema ID backup.) Note: We currently don't support Apple Silicon based Macs, because of current limitations of Carthage with Xcode 12 and our current WebRTC builds.

Testing

See "Building" for setting up a running environment. Before running the tests check if you can sucessfully build and run the app.

Choose Threema as scheme to run the app and framework tests. Choose ThreemaWork as scheme to run Threema Work specific tests. Reproducible Builds Due to restrictions by Apple, it’s no easy task to offer reproducible builds for iOS, but we are currently evaluating possible ways to also support reproducible builds for this platform.

Code Organization / Architecture

Before digging into the codebase, you should read the Cryptography Whitepaper to understand the design concepts.

These are the most important groups of the Xcode project:

PhantomFramework : Shared code between the main app and extensions

Phantom: Code of both apps (Phantom and Phantom Work)

PhantomShareExtension: Code of share extension

Phantom{Framework}Tests: Test files

Our dependencies are manged with Carthage. Additionally we use WebRTC based on binaries hosted on our servers. If you want to build WebRTC yourself see BUILD_WEBRTC.md.

Contributions

We accept GitHub pull requests. Please refer to https://phantom.org/open-source/contributions for more information on how to contribute.

License

Phantom for iOS is licensed under the GNU Affero General Public License v3.

`Copyright (c) 2021 Phantom GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.`

The full license text can be found in LICENSE.txt.

If you have questions about the use of self-compiled apps or the license in general, feel free to contact us. We are publishing the source code in good faith, with transparency being the main goal. By having users pay for the development of the app, we can ensure that our goals sustainably align with the goals of our users: Great privacy and security, no ads, no collection of user data!

You might also like...
MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift
MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift

About MessengerKit is a drop-in UI for messenger interfaces on iOS built in Swift. Centred around a single UIViewController, MessengerKit is themeable

Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

🌟🌟🌟🌟🌟 Falcon Messenger is a Fast and Beautiful cloud-based messaging app. With iOS and IPadOS Support. Available on the App Store.
🌟🌟🌟🌟🌟 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

Open source, native iOS Messenger, with realtime chat conversations (full offline support).
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

A private messenger for iOS.

Signal iOS Signal is a free, open source, messaging app for simple private communication with friends. Also available on Android and Desktop. Question

Open source, native iOS Messenger, with realtime chat conversations (full offline support).
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Chat SDK iOS - Open Source Mobile Messenger
Chat SDK iOS - Open Source Mobile Messenger

Chat SDK Open Source Messaging framework for iOS Chat SDK is a fully featured open source instant messaging framework for iOS. Chat SDK is fully featu

Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

You can dismiss modal viewcontroller like Facebook Messenger by pulling scrollview or navigationbar in Swift.
You can dismiss modal viewcontroller like Facebook Messenger by pulling scrollview or navigationbar in Swift.

PullToDismiss PullToDismiss provides dismiss modal viewcontroller function like Facebook Messenger by pulling scrollview or navigationbar with smooth

The horizontal swiping navigation like on Facebook Messenger.
The horizontal swiping navigation like on Facebook Messenger.

UIMenuScroll UIMenuScroll creating menu how on Facebook Messenger on take photo Installation CocoaPods is a dependency manager for Cocoa projects. You

Social App - In that application I desided to make a custom messenger service
Social App - In that application I desided to make a custom messenger service

Social App About the project / О ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ English In that application I desided to make a custom messenger service. Project is on early development sta

You can dismiss modal viewcontroller like Facebook Messenger by pulling scrollview or navigationbar in Swift.
You can dismiss modal viewcontroller like Facebook Messenger by pulling scrollview or navigationbar in Swift.

PullToDismiss PullToDismiss provides dismiss modal viewcontroller function like Facebook Messenger by pulling scrollview or navigationbar with smooth

[Unofficial] IP Messenger for macOS
[Unofficial] IP Messenger for macOS

IP Messenger for macOS β€œIP Messenger for macOS” is a pop up style message communication software for multi platforms. It’s a port of Windows Version.

BubblesChatAppIos - A realtime messenger application Allows the users to communicate through virtual chats
BubblesChatAppIos - A realtime messenger application Allows the users to communicate through virtual chats

Bubbles Chat App a realtime messenger application Allows the users to communicat

Jake Brown Tech Messenger With Swift
Jake Brown Tech Messenger With Swift

Open the FalconMessenger.xcworkspace in Xcode. Change the Bundle Identifier to m

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.

Create ImageView for User or Group like Messenger app
Create ImageView for User or Group like Messenger app

MessengerBubbles Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation C

πŸ“± Very simple and lightweight messenger using Firebase
πŸ“± Very simple and lightweight messenger using Firebase

πŸ“± Very simple and lightweight messenger using Firebase πŸ”₯. It is a training project for the practice of MVVM architecture.

Owner
null
Chat SDK iOS - Open Source Mobile Messenger

Chat SDK Open Source Messaging framework for iOS Chat SDK is a fully featured open source instant messaging framework for iOS. Chat SDK is fully featu

Chat SDK 879 Jan 6, 2023
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 621 Jan 6, 2023
MQTT for iOS and macOS written with Swift

CocoaMQTT MQTT v3.1.1 client library for iOS/macOS/tvOS written with Swift 5 Build Build with Xcode 11.1 / Swift 5.1 Installation CocoaPods Install us

EMQ X MQTT Broker 1.4k Dec 29, 2022
A very flexible message bar for iOS written in Swift.

A very flexible message bar for iOS written in Swift.

SwiftKick Mobile 6.7k Jan 5, 2023
An XMPP Framework in Objective-C for Mac and iOS

XMPPFramework An XMPP Framework in Objective-C for the Mac and iOS development community. Abstract XMPPFramework provides a core implementation of RFC

Robbie Hanson 5.9k Dec 26, 2022
A smooth, responsive and flexible messages UI library for iOS.

AsyncMessagesViewController A smooth, responsive and flexible messages UI library for iOS apps. Built on top of the awesome Texture (formerly AsyncDis

Huy Nguyen 300 Oct 10, 2022
Swift toolkit for passing messages between iOS apps and extensions.

_________ ___ ___ _ _____ _________ ___ ___ / / \ \ / / |_| ( ___ \ \__ __/ \ \ / / / _____/ \ \ /\ /

Abdullah Selek 58 Nov 3, 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
Protected is a Swift Package that allows you to specify the read and write rights for any type, depending on context by using Phantom types

Protected is a Swift Package that allows you to specify the read and write rights for any type, depending on context by using Phantom types

Mathias Quintero 9 Sep 25, 2022
A phantom type is a custom type that has one or more unused type parameters.

PhantomTypes A phantom type is a custom type that has one or more unused type parameters. Phantom types allow you to enforce type-safety without sacri

null 3 Nov 4, 2022