All Projects → threema-ch → Threema Ios

threema-ch / Threema Ios

Licence: agpl-3.0
Threema App for iOS.

Projects that are alternatives of or similar to Threema Ios

Threema Android
Threema App for Android.
Stars: ✭ 478 (+117.27%)
Mutual labels:  mobile-app, messaging
Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+2218.64%)
Mutual labels:  mobile-app, messaging
mangosta-android
MongooseIM client for Android
Stars: ✭ 31 (-85.91%)
Mutual labels:  messaging, mobile-app
Mangosta Ios
MongooseIM client for iOS
Stars: ✭ 28 (-87.27%)
Mutual labels:  mobile-app, messaging
Vuvuzela
Private messaging system that hides metadata
Stars: ✭ 2,423 (+1001.36%)
Mutual labels:  messaging
Android
📱 Nextcloud Android app
Stars: ✭ 2,669 (+1113.18%)
Mutual labels:  mobile-app
React Discord Clone
Discord Clone using React, Node, Express, Socket-IO and Mysql
Stars: ✭ 198 (-10%)
Mutual labels:  messaging
Strimzi Kafka Operator
Apache Kafka running on Kubernetes
Stars: ✭ 2,833 (+1187.73%)
Mutual labels:  messaging
Netdevpack
A smart set of common classes and implementations to improve your development productivity.
Stars: ✭ 220 (+0%)
Mutual labels:  messaging
Amplitude Ios
Native iOS/tvOS/macOS SDK
Stars: ✭ 216 (-1.82%)
Mutual labels:  mobile-app
Phpnats
A PHP client for the NATSio cloud messaging system.
Stars: ✭ 209 (-5%)
Mutual labels:  messaging
Rabbitmq Objc Client
RabbitMQ client for Objective-C and Swift
Stars: ✭ 207 (-5.91%)
Mutual labels:  messaging
Harpy
A Twitter app built with Flutter
Stars: ✭ 211 (-4.09%)
Mutual labels:  mobile-app
Chat21 Android Sdk
Android Chat SDK built on Firebase
Stars: ✭ 204 (-7.27%)
Mutual labels:  messaging
Hackerbuzz Reactnative
A Hacker News Reader built in React Native for iOS and Android
Stars: ✭ 220 (+0%)
Mutual labels:  mobile-app
Vonage Ruby Sdk
Vonage REST API client for Ruby. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 203 (-7.73%)
Mutual labels:  messaging
Watsontcp
WatsonTcp is the easiest way to build TCP-based clients and servers in C#.
Stars: ✭ 209 (-5%)
Mutual labels:  messaging
Vernemq
A distributed MQTT message broker based on Erlang/OTP. Built for high quality & Industrial use cases.
Stars: ✭ 2,628 (+1094.55%)
Mutual labels:  messaging
Qtfirebase
An effort to bring Google's Firebase C++ API to Qt + QML
Stars: ✭ 208 (-5.45%)
Mutual labels:  messaging
Easy.messagehub
No need for .NET Events! A thread-safe, high performance & easy to use cross platform implementation of the Event Aggregator Pattern.
Stars: ✭ 208 (-5.45%)
Mutual labels:  messaging


Threema for iOS

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

Table of Contents

Bug Reports / Feature Requests / Security Issues

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

If you find a security issue in Threema, please follow responsible disclosure and report it to us via Threema or by encrypted email, we will try to respond as quickly as possible. You can find the contact details at threema.ch/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 Threema for iOS is published under an open source license, Threema 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 Threema ID using the Threema 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 Threema scheme cannot be used to create a new Threema 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.

Threema Work

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

Schemes

  • Threema builds and tests the consumer app. (recommended for local testing)
  • ThreemaWork 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 Carthage

    brew install carthage
    

    (If you don't have homebrew see their official install instructions.)

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

    sudo xcode-select --switch /Applications/Xcode.app
    
  3. 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)

  1. Open Threema.xcproject in Xcode
  2. Repeat these steps for the Threema and ThreemaShareExtension target
    1. Check "Automatically manage signing" and confirm it ("Enable Automatic")
    2. Set "Team" to the team of your developer account
  3. Choose Threema as scheme and a simulator

Threema Work

  1. Open Threema.xcproject in Xcode
  2. Repeat these steps for the Threema Work and ThreemaForWorkShareExtension target
    1. Check "Automatically manage signing" and confirm it ("Enable Automatic")
    2. Set "Team" to the team of your developer account
  3. Choose Threema Work as scheme and a simulator

3. Build and Run

  1. Build and Run
  2. 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:

  • ThreemaFramework: Shared code between the main app and extensions
  • Threema: Code of both apps (Threema and Threema Work)
  • ThreemaShareExtension: Code of share extension
  • Threema{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://threema.ch/open-source/contributions for more information on how to contribute.

License

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

Copyright (c) 2012-2021 Threema 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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].