Apple is often accused of deliberately creating a 'walled garden': a closed ecosystem that works seamlessly for those inside but discourages interoperability with other company's platforms.
One example of this is iMessage, a secure and feature-rich messaging service that only works between iOS devices and is generally a huge pain in the neck for Android users whose friends all have iPhones.
However, that may change in the near-future with RCS messaging, which brings iMessage-esque features to the standard SMS experience. It's rumoured that both Apple and Google are working on adding RCS support, which is good news for everybody involved.
But that hasn't happened just yet, and readers often ask us if there is a way to send iMessages to or from Android devices. The answer, fortunately, is that there is - although the method we show in this tutorial (the use of a service called weMessage) requires the Android user to also own a Mac computer, which may be a bit of a long shot. If that works for you, read on.
Of course, you could also advise your friend to move from Android to iPhone.
What do you need?
This method mainly has to be set up at the Android user's end, so you'll first need an Android-using friend who is willing to go to a moderate amount of effort (or let you install software on their devices) in order to receive your iMessages.
They will need an Android device, of course, and as mentioned above they will need a Mac running macOS Yosemite or later: the Mac is vital because it receives the iMessages and then forwards them on to the phone. In terms of software, they will need to install weMessage on both the Android device and the Mac.
Set up weMessage
Most of the setup process takes place on the Mac, not the Android device. Let's get started.
Install Java (if required)
Make sure you've got Java installed. weMessage suggests opening Terminal and typing in java; if you see a long stream of code in the Terminal box, you've got Java, but if a dialog box pops up warning that you need to install Java, do as you're told.
Get the JDK (not the JRE) from Oracle's website and follow the installation instructions. Make sure you get the macOS version.
Adjust privacy settings
Now you need to tell macOS to upgrade Terminal's privacy settings.
Open System Preferences. Select Security & Privacy > Privacy > Accessibility, then unlock the settings by clicking the padlock icon and entering your password. Click the plus sign, find Terminal (in Applications > Utilities), click it and hit Open.
Set up your weMessage server
Download weServer for macOS from the company's website, then double-click run.command in the downloaded folder. (You may have to follow the instructions in How to open a Mac app from an unidentified developer.)
You will now have to enter an email address (which should match the iMessage account that's set up on this Mac) and a password (which can be anything you like, but you'll need to remember).
Set up weMessage on the Android device
Install weMessage on the Android device if you haven't done so already, and open the app. Enter the IP address of the Mac that's running weServer (to find it, go to System Preferences > Network), and the same email and password entered in the previous step.
And that's it - you should see a tick in the app, and if you go back to the Mac Terminal will tell you that everything is connected up. You'll now be able to receive iMessages sent to the Mac on the Android device.
However, at this point, you are limited to receiving iMessages while the Mac and Android device are on the same internet connection. To have access when you're out and about, you'll need to set up port forwarding.