AirMessage Server, implemented natively in Swift

Related tags

Image imessage
Overview

AirMessage Server

AirMessage for Android and AirMessage for web connected to AirMessage Server

AirMessage lets people use iMessage on the devices they like. AirMessage Server functions as the bridge between AirMessage client apps and iMessage by running as a service on a Mac computer.

Other AirMessage repositories: Android | Web | Connect (community)

Getting started

AirMessage Server requires Xcode 12+ to build, as well as Node.js and OpenSSL.

To generate a universal OpenSSL binary to link, run Configure.command in the OpenSSL directory.

AirMessage Server uses a configuration file to associate with online services like Firebase and Sentry. The app will not build without valid configuration files, so to get started quickly, you can copy the provided default files to use a pre-configured Firebase project, or you may provide your own Firebase configuration file:

  • AirMessage/AuthSite/secrets.default.js > AirMessage/AuthSite/secrets.js
  • AirMessage/Secrets.default.xcconfig > AirMessage/Secrets.xcconfig

Building and running for AirMessage Connect

In order to help developers get started quickly, we host a separate open-source version of AirMessage Connect at connect-open.airmessage.org. The default configuration is pre-configured to authenticate and connect to this server. Since this version of AirMessage Connect is hosted in a separate environment from official servers, you will have to connect client apps to the same AirMessage Connect server.

We kindly ask that you do not use AirMessage's official Connect servers with any unofficial builds of AirMessage-compatible software.


Thank you for your interest in contributing to AirMessage! You're helping to shape the future of an open, secure messaging market. Should you have any questions, comments, or concerns, please shoot an email to [email protected].

Comments
  • Files with non-standard extension casing don't get picked up for automatic conversion

    Files with non-standard extension casing don't get picked up for automatic conversion

    currently if the user sends an heic image, the web still shows the download sign, but it doesn't either display or download the image, currently, no browser can actually support heic image yet, so we need a mechanism to automatically convert the heic to JPG

    bug 
    opened by jason919 18
  • AirMessage server gives up when network is down.

    AirMessage server gives up when network is down.

    My internet service has occasional short outages. Of course when that happens, AirMessage notices it can't reach the internet. This makes it so sad it gives up.

    At that point my Android AirMessage App notices that it can't reach the server. This makes it sad. So it throws up it's hands and gives up.

    Then my loving correspondents send me some messages. I don't get these. They think I'm a jerk. This makes me sad.

    The server's menu-ui shows a "Retry" choice. That has never worked for me. But killing and restarting the server makes things better... kind of.

    I think, both the server and client should be more persistent. Giving up makes me look bad. We are all sad about that, I'm sure.

    bug 
    opened by bhyde 12
  • When building, Zlib library not found and must be added manually

    When building, Zlib library not found and must be added manually

    When I tried to build server and (I believe) followed the requisite setup instructions, the build fails due to the fact that it can't locate the zlib dependency. I was able to workaround this by:

    • going to File>Add Packages>Add Local and selecting the Zlib folder in the base of this repo
    • I then went to the AirMessage target, General>Frameworks, Libraries, and Embedded Content, clicked '+'
    • Locate Zlib library and click Add

    I'm very new at Xcode/MacOS development, so I'm unsure how/if this is fixable from a project configuration standpoint, but I just wanted to document the steps in case anybody else ran into this as well.

    opened by kylefmohr 8
  • Does it use HTTPS?

    Does it use HTTPS?

    Im trying to add my own reverse proxy on it and the server refuses to work the same way as when i connect to directly to ip address. Example 192.168.1.90:1359 works fine but airmessage.example.com does not and airmessage.example.com points to http://192.168.1.90:1359. So im a little confused why?

    opened by shreyasajj 5
  • Fixes for Invalid Index errors.

    Fixes for Invalid Index errors.

    @tagavari Hey, I replied to you on Discord -- these are the fixes that have eliminated those AppleScript Invalid Index errors for me. Basically makes use of some repeat loops to detect the presence of the buttons we're looking for, and uses try catch exceptions to prevent stopping on irrelevant errors.

    In the future, I might try speeding up the execution of these scripts by replacing some of the arbitrary delays with similar loops.

    opened by j4byers 4
  • upgrading from v3 > v4 prevents messages ever loading

    upgrading from v3 > v4 prevents messages ever loading

    v3 works great and can send texts etc, 3.4.1

    but when downloading v4, fixing the privacy accessibility settings, running it, the client connects, the client can see the facetime experiemntal toggle being turned on, but it fails on liteconversationretrieval / of length 0 so the client just never loads messages :(

    what coudl this issue be? i cleared cache on client and everything to confirm. is there cache in server i need to clear?

    bug 
    opened by Geczy 3
  • Server crashes with

    Server crashes with "external error"; does not try to restart

    I've had a repeating issue that occurs more frequently than I'd like. Often I will open the app, and it will say "Personal server not available". The server, in the menu bar, will say "An external error occurs." The server does not, from appearance, try to restart.

    Might I suggest a retry-loop with a configurable threshold (maybe with a default of 5 retries before failing), and use/show a log window instead? I would strongly prefer this over having to connect to the Mac over VNC and click a button to restart the server: a process that should realistically be automated.

    opened by JosephM101 2
  • Implement more aggressive lost connection detection

    Implement more aggressive lost connection detection

    When the server loses connection to AirMessage Connect, it may take a while for it to pick up on the fact that the connection has been severed and re-establish it. The server should check the health of the connection more frequently.

    This can easily be recreated on laptops by running the server, then closing the lid for a few minutes. When the laptop is reopened, the server will still think it is connected, but no clients will be able to connect to it.

    Reported by Avibee and others on Discord: https://discord.com/channels/992925221256450068/992929582439202908/1004535441212571769

    This may be a duplicate of #13.

    enhancement 
    opened by tagavari 2
  • Add AirMessage Server to Homebrew Cask

    Add AirMessage Server to Homebrew Cask

    Hi,

    Is there any way that you could submit AirMessage Server to be included as a Homebrew Cask for users who'd prefer to use brew as their package manager?

    Thanks in advance!

    enhancement 
    opened by mariobrostech 1
  • how to run it locally?

    how to run it locally?

    Showing All Messages No account for team "T86T6AP696". Add a new account in the Accounts preference pane or verify that your accounts have valid credentials.

    No signing certificate "Mac Development" found: No "Mac Development" signing certificate matching team ID "T86T6AP696" with a private key was found.

    opened by Geczy 1
  • Duplicate messages

    Duplicate messages

    Not sure if this is the android app or the server but anywho, submitting it here.

    When the android app loses connection which happens several hundred times per day while connected to my local wifi (that's because the fallback is the intranet address?), it sometimes decides to just send me the same notification over and over again. When I open the android up, I get 2 copies of the same messages - send and received. Then on the next notification I get 3 copies, and then 4. Haven't seen 5 yet, fingers crossed! 🤞

    bug 
    opened by working-name 1
  • Add support for Google accounts with security keys

    Add support for Google accounts with security keys

    Right now, you can't sign into a Google account that uses security keys because the in-app browser on Mac doesn't support them in AirMessage. Additionally, with Advanced Protection enabled there is no bypass other than removing and re-enrolling all your keys.

    Rather than using the alternative iMessage setup method, it would be nice if the app could either: show the URL (so the user can copy it into their own browser that does support security keys) or be given the option to complete the sign-in directly in their browser.

    opened by StevenPrescott 1
  • Server does not autostart after power failure

    Server does not autostart after power failure

    I have my iMac set up to automatically turn on when power is restored. However, we had a couple power outages here since I set it up, and neither time did the AirMessage server start automatically. (It does auto-start after a full reboot) Is this an AirMessage issue? Is this a macOS issue? Has anybody else had this issue? Is there a fix?

    P.S. My iMac is running Big Sur.

    opened by JosephM101 0
  • Update to 4.1.1 - not working

    Update to 4.1.1 - not working

    After upgrading to version 4.1.1 this msg showing up

    “AirMessage” is damaged and can’t be opened. You should move it to the Bin. This file was downloaded on an unknown date. Screenshot 2022-08-11 at 20 45 36

    opened by zicochaos 1
  • FaceTime does nothing if display is turned off/sleeping, buffers operations to when display is on

    FaceTime does nothing if display is turned off/sleeping, buffers operations to when display is on

    Like the title says. Attempting to FaceTime while screen is off (but system is still on) will do nothing, giving "Unable to complete FaceTime" error. Going back to the Mac, turning the display on (even hours later!) will cause the call to start right there and then, even though the client is no longer "there". Obviously on my machine there is no screen, it is a Mac mini, but still.

    This becomes an even bigger issue considering the fact that, by default, disconnecting from a screen share will put the display to sleep.

    Workaround I found (only applies to headless machines):

    • Set all the options to perma keep display on, sleep never
    • sudo defaults write /Library/Preferences/com.apple.RemoteManagement RestoreMachineState -bool NO to keep display on when disconnecting
    opened by andre4ik3 0
  • Retrying to send failed messages may result in duplicate messages being sent

    Retrying to send failed messages may result in duplicate messages being sent

    When a message fails to send, hitting Retry can cause the server to send the message multiple times. This is more likely to happen with larger attachment files.

    I'm not sure if this is a bug in the client, server, or both, so until this is looked into further it will be filed here.

    Originally reported by rx on Discord

    bug 
    opened by tagavari 0
Releases(v4.1.4)
  • v4.1.4(Oct 19, 2022)

    • Fixed Google sign-in on macOS 13 Ventura
    • Simplified Google sign-in flow
    • Improved robustness of FaceTime scripts (thanks @j4byers!)
    • Improved error data when an AppleScript file fails to initialize
    • Implemented automatic reconnections for AirMessage Cloud errors
    • Fixed a crash when cancelling an AirMessage Cloud connection shortly after creating it
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.1.4.zip(13.16 MB)
  • v4.1.3(Aug 13, 2022)

  • v4.1.2(Aug 11, 2022)

  • v4.1.1(Aug 10, 2022)

    • Added a new remote update error to inform users when the app is affected by app translocation
    • Improved lost connection detection over AirMessage Cloud
    • Fixed a bug where previously exchanged messages would be duplicated on client devices after a restart
    • Fixed a bug where the server would be unable to reconnect to AirMessage Cloud after getting disconnected
    • Fixed a performance issue when checking the status of read receipts (thanks @geczy!)
    • Fixed a bug where setting a blank password would revert after restarting the app
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.1.1.zip(13.53 MB)
  • v4.1.0(Jul 29, 2022)

    AirMessage Server 4.1.0 introduces the following changes:

    • Added initial support for macOS 13 Ventura
    • Fixed a crash when looking up file sizes on certain attachment files
    • Fixed a bug where users on OS X 10.10 - 10.15 would be unable to create a chat with new users
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.1.0.zip(10.49 MB)
  • v4.0.1(Jul 20, 2022)

    This update improves the stability of AirMessage Server.

    • Fixed a bug where the app would crash in certain cases when a TCP client is inadvertently disconnected
    • Fixed a bug where .heic and .caf attachments with non-lowercase extensions would not be converted when downloaded
    • Upgraded to OpenSSL 3.0.5
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.1.zip(10.48 MB)
  • v4.0.0(Jul 2, 2022)

    AirMessage Server 4 is now stable! A big thank you to everyone involved in testing the pre-release builds.

    • Fixed a bug where all attachments would be downloaded, if the user specified that none should be
    • Added a warning for users upgrading from older versions that AirMessage may need to be fully removed and then re-added to macOS Security lists
    • Updated dependencies
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0.zip(10.47 MB)
  • v4.0.0-alpha10(Jun 9, 2022)

    This update improves the stability of AirMessage Server.

    • Fixed a bug where selecting a port higher than 32,767 would cause the app to crash
    • Fixed a bug where resources would not be cleaned up properly if a TCP client misbehaves
    • Fixed a bug where the onboarding window could be opened multiple times by clicking Sign in again
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha10.zip(10.45 MB)
  • v4.0.0-alpha9(Jun 6, 2022)

    This update improves the stability and security of AirMessage Server.

    • Fixed a bug that could occur on macOS 12.4 where the connection with AirMessage Cloud would be repeatedly interrupted
    • Fixed a crash that could occur when writing to closed direct connections
    • Fixed a crash that could occur when initializing timeouts
    • Fixed a bug where the updating modal would not render correctly
    • Upgraded to OpenSSL 3.0.3
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha9.zip(10.45 MB)
  • v4.0.0-alpha8(Apr 23, 2022)

    This update improves the stability, compatibility, and security of AirMessage Server.

    • Fixed a bug where update checks would not download the latest update data for short periods of time
    • Fixed a bug where stickers and tapbacks would not show up when loading past messages on AirMessage for web
    • Fixed a crash when generating a FaceTime link if the link was not copied correctly
    • Fixed a crash that could occur in certain cases when pinging connected clients
    • Added logging for client connections and disconnections in error reports
    • Improved the security of advanced message fetch requests
    • Upgraded to OpenSSL 3.0.2
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha8.zip(10.43 MB)
  • v4.0.0-alpha7(Mar 2, 2022)

    This update improves stability and FaceTime compatibility of AirMessage Server.

    • Fixed a crash that could occur when rapidly connecting and disconnecting clients
    • Fixed update checks not defaulting to enabled
    • Fixed getting the link for incoming FaceTime calls in certain situations
    • Fixed copying FaceTime links taking a long time on certain devices
    • Fixed the status menu item being enabled when it shouldn't be
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha7.zip(10.36 MB)
  • v4.0.0-alpha6(Feb 27, 2022)

    This update improves the security and stability of AirMessage Server.

    • Fixed a crash when fetching attachments without a filename
    • Fixed a crash when disconnecting TCP clients while uploading data
    • Fixed the Preferences… menu item not disabling when in setup mode
    • Fixed the width of buttons on the password input sheet
    • Improved error logging for AppleScript and other custom errors
    • Updated to OpenSSL 3.0.1, and updated client libraries used for Google account authentication
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha6.zip(10.37 MB)
  • v4.0.0-alpha5(Feb 25, 2022)

    • Fixed a crash when querying multiple conversations for base information
    • Fixed a crash when connecting and disconnecting TCP clients in rapid succession
    • Fixed a bug that would cause encrypted messages to be sent to non-verified TCP clients
    • Improved error reporting when an AppleScript file fails to load
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha5.zip(10.36 MB)
  • v4.0.0-alpha4(Feb 23, 2022)

    This release improves the stability of AirMessage Server 4.

    • Implemented recovery logic for when the latest.log is deleted during a session
    • Implemented recovery logic for when the user rejects Keychain access
    • Fixed a crash when encountering a communications error with Firebase while signing in with an account
    • Fixed a crash when dismissing the account sign-in sheet using the "Cancel" button while the authentication prompt was being displayed
    Source code(tar.gz)
    Source code(zip)
    AirMessage-4.0.0-alpha4.zip(10.35 MB)
  • v4.0.0-alpha3(Feb 20, 2022)

  • v4.0.0-alpha2(Feb 13, 2022)

Owner
AirMessage
iMessage for Android and the web
AirMessage
Simple camera application for iOS that uploads pictures to WebDAV server or Dropbox quickly. Available on the AppStore.

Upupu Simple camera application for iOS that uploads pictures to WebDAV server or Dropbox quickly. Also available on the AppStore. Features Easy and f

Xcoo 65 Nov 15, 2022
The frontend (phone) code for the e-mission server

e-mission phone app This is the phone component of the e-mission system. ✨ This has now been upgraded to cordova [email protected] and [email protected] (details)

null 16 Nov 2, 2022
API surface for Swift plug-ins using the Swift Plugin Manager

SwiftPlugin The minimal API surface required for the Swift Plugin Manager to create instances from a loaded plugin. Additional documentation and refer

Joakim Hassila 2 Mar 25, 2022
Contentful.swift : Swift Delivery SDK for Contentful

contentful.swift - Swift Delivery SDK for Contentful Swift SDK for the Contentfu

An Tran 1 Jan 6, 2022
Swift Package Manager command plugin for Swift-DocC

Swift-DocC Plugin The Swift-DocC plugin is a Swift Package Manager command plugin that supports building documentation for SwiftPM libraries and execu

Apple 225 Dec 24, 2022
Agrume - 🍋 An iOS image viewer written in Swift with support for multiple images.

Agrume An iOS image viewer written in Swift with support for multiple images. Requirements Swift 5.0 iOS 9.0+ Xcode 10.2+ Installation Use Swift Packa

Jan Gorman 601 Dec 26, 2022
BlockiesSwift - Unique blocky identicons generator for Swift

⚗️ BlockiesSwift This library is a Swift implementation of the Ethereum fork of Blockies which is intended to be used in iOS, watchOS, tvOS and macOS

null 56 Jan 6, 2023
FacebookImagePicker is Facebook album photo picker written in Swift.

Features • Installation • Usage • Translation • License GBHFacebookImagePicker is Facebook's album photo picker written in Swift, built to provide a s

Florian Gabach 231 Dec 17, 2022
GPUImage 2 is a BSD-licensed Swift framework for GPU-accelerated video and image processing.

GPUImage 2 Brad Larson http://www.sunsetlakesoftware.com @bradlarson [email protected] Overview GPUImage 2 is the second generation of th

Brad Larson 4.8k Dec 29, 2022
GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal.

GPUImage 3 Janie Clayton http://redqueengraphics.com @RedQueenCoder Brad Larson http://www.sunsetlakesoftware.com @bradlarson contact@sunsetlakesoftwa

Brad Larson 2.4k Jan 3, 2023
A lightweight generic cache for iOS written in Swift with extra love for images.

Haneke is a lightweight generic cache for iOS and tvOS written in Swift 4. It's designed to be super-simple to use. Here's how you would initalize a J

Haneke 5.2k Dec 11, 2022
A lightweight and fast image loader for iOS written in Swift.

ImageLoader ImageLoader is an instrument for asynchronous image loading written in Swift. It is a lightweight and fast image loader for iOS. Features

Hirohisa Kawasaki 293 Nov 24, 2022
A Swift implementation of fastimage. Supports PNG, GIF, and JPEG.

ImageScout ImageScout is a Swift implementation of fastimage. It allows you to find the size and type of a remote image by downloading as little as po

Reda Lemeden 967 Dec 30, 2022
A Swift client library for generating URLs with imgix

imgix-swift is a client library for generating image URLs with imgix. Written in Swift, but can be used with Objective-C codebases as well. Installati

imgix 24 Sep 28, 2022
Kingfisher is a powerful, pure-Swift library for downloading and caching images from the web

Kingfisher is a powerful, pure-Swift library for downloading and caching images from the web. It provides you a chance to use a pure-Swift way to work

Wei Wang 20.9k Dec 30, 2022
🍁🥓 Lightweight and fast Swift library for image downloading, caching and transformations

MapleBacon Introduction MapleBacon is a lightweight and fast Swift library for downloading and caching images. Example The folder Example contains a s

Jan Gorman 335 Nov 1, 2022
An image download extension of the image view written in Swift for iOS, tvOS and macOS.

Moa, an image downloader written in Swift for iOS, tvOS and macOS Moa is an image download library written in Swift. It allows to download and show an

Evgenii Neumerzhitckii 330 Sep 9, 2022
❄️ SVG in Swift

Snowflake ❤️ Support my apps ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut ma

Khoa 949 Dec 14, 2022
Fabulous Image Processing in Swift

Toucan is a Swift library that provides a clean, quick API for processing images. It greatly simplifies the production of images, supporting resizing,

Gavin Bunney 2.4k Jan 6, 2023