/wire-ios-sync-engine

iOS synchronization library for Wire

Primary LanguageObjective-CGNU General Public License v3.0GPL-3.0

Wire™

Wire logo

Build Status

This repository is part of the source code of Wire. You can find more information at wire.com or by contacting opensource@wire.com.

You can find the published source code at github.com/wireapp/wire.

#Wire iOS Sync Engine

The wire-ios-sync-engine framework is used as part of the Wire iOS client and is the top-most layer of the underlying sync engine. It is using a number of lower-level frameworks. wire-ios-sync-engine and the lower-lever frameworks constitute the iOS sync engine, as illustrated in the following picture.

iOS architecture

The Wire iOS sync engine is developed in a mix of Objective-C and Swift (and just a handful of classes in Objective-C++). It is a result of a long development process that was started in Objective-C when Swift was not yet available. In the past year, parts of it have been written or rewritten in Swift. Going forward, expect new functionalities to be developed almost exclusively in Swift.

How to build

iOS SyncEngine is build with Xcode 8 using Swift 3.

It is using Carthage to manage dependencies. To pull the dependencies binaries, run carthage bootstrap —-platform ios .

You can now open the Xcode project and build.

Repositories

  • wire-ios-utilities: implements common data structures, algorithms (such as symmetric encryption) and application environment detection (internal or public build / production or staging backend)
  • wire-ios-system: covers interaction with ASL (Apple System Log), profiling and wrappers of some foundation/cocoa classes
  • wire-ios-transport: abstracts the network communication with the backend: handles authentication of requests, network failures and retries transparently
  • wire-ios-testing: testing utilities
  • wire-ios-protos: precompiled protocol buffer definitions for objective-c / swift and some convenience methods around them
  • wire-ios-mocktransport: simulates the entire network component (including backend behaviour) for testing purposes
  • wire-ios-images: performs rotation and scaling of images
  • wire-ios-cryptobox: higher level convenience wrappers around cryptobox for iOS
  • wire-ios-data-model: Core Data model and entity classes
  • cryptobox-ios: iOS binaries for cryptobox
  • wire-ios-link-preview: OpenGraph processor (fetching and parsing)
  • wire-ios-message-strategy: generates network requests needed to exchange data with the backend (send messages, get list of contacts, etc.)
  • wire-ios-request-strategy: abstraction of network request generators