How is that possible? Since Apple refuses to relinquish its grip on iPhone users’ phone numbers, people have been trying to make iMessage work on Android for a long time. The big breakthrough came when Apple brought iMessage to the Mac. Therein lies the key to getting this working.

RELATED: Dear Android Users, iMessage Is Better Than You Think

What You’ll Need

Before we get your hopes up too much, you should know there are some pretty big catches. First, and most importantly, you will need a macOS device or a macOS virtual machine—though it is highly recommended to do this with actual Apple hardware.

That device will need to be on Mac OS X El Capitan (released in 2015) or newer, but you’ll want to take a minute to decide which version will best suit your needs. Certain features of iMessage are not supported through the software we’ll be using with some versions of macOS (more on that later).

We’ll be using an open-source tool called BlueBubbles. AirMessage is another popular solution, but we think BlueBubbles has a few advantages. It’s self-hosted so you’re not reliant on servers run by other people. BlueBubbles is community-driven and has desktop apps for Windows and Linux, a web app, and tons of personalization features.

As mentioned, certain BlueBubbles features are not available on all macOS versions. Check out the table below to see which version best fits your needs.

Of course, you will also need an Apple ID to use iMessage. Other than that, we’re all set. In short, you need a Mac running a compatible version of macOS, the Messages app signed in with your Apple ID, and the BlueBubbles server. So let’s get started.

Set Up the BlueBubbles Server

The most important part of the puzzle is the BlueBubbles server. The server runs on your macOS device and acts as sort of a “hub” for iMessages to be sent to the BlueBubbles apps on your Android phone and Windows or Linux PC.

First, head over to the GitHub page on your macOS device and download the latest DMG file of the BlueBubbles server.

Next, open the DMG file and drag it to the “Applications” folder after it installs. Now you can open the app.

You’ll first be asked to give BlueBubbles “Full-Disk Access.” This is required in order for BlueBubbles to read from the iMessage chat database. Click “Open System Preferences.”

Go to the “Security & Privacy” section of the Settings and select “Full Disk Access” in the sidebar.

Click the lock icon in the bottom corner to enter your Mac password and then enable BlueBubbles. You’ll be asked to restart BlueBubbles.

Before leaving the “Security & Privacy” Settings, go to the “Accessibility” section and enable BlueBubbles as well.

At some point during this initial setup, you will also be asked to grant BlueBubbles access to your contacts. Click “OK” to allow that.

Here’s where things get a bit complicated. BlueBubbles uses Google Firebase Cloud Messaging for notifications to your devices. This allows BlueBubbles to not require a connection to the server at all times, which means you get notifications even when the app is running in the background and it doesn’t use as much battery.

To get started, go to the Google Firebase Console and log in with your Google account. Click “Create a Project” and name it “BlueBubblesApp.” You do not need to enable Google Analytics for the project.

Next, under “Build” in the sidebar menu, go to Realtime Database > Create Database.

Choose your location then click Next > Enable with “Start in Locked Mode” selected.

Next, click the gear icon next to “Project Overview” in the sidebar menu and go to Project Settings > Service Accounts > Create Service Account > click “Generate New Private Key” and save the file to your Mac.

Now switch to the “Cloud Messaging” tab and click the three-dot menu icon for “Cloud Messaging Legacy API” and go to Manage API in Cloud Console > Enable.

Drag and drop the JSON file we downloaded that includes “firebase-adminsdk” in the filename to the BlueBubbles app.

Back on the Project Settings menu on the Firebase website, go to the “General” tab. Click the Android icon at the bottom of the page.

Enter “com.[yourname].bluebubbles for the “Android Package Name” and click “Register App” to download the google-services.json file.

Now we can drag the google-services.json file to the BlueBubbles app as well. Click “Next” after you’ve done that.

Enter a strong password for your server and click the save icon. Click the “Next” button when you’re done.

The next screen is for “Private API Setup.” This is one of the most advanced features of BlueBubbles. If you’d like to be able to send reactions, replies, subjects, see typing indicators, and effects, you’ll need to follow the instructions on this page. Note that this requires disabling some extra security measures on your Mac.

The last thing to do is enable “Startup with macOS” and “Keep macOS Awake” to ensure the BlueBubbles server stays running. You can also have BlueBubbles automatically check for and install updates.

Connect the Server to the BlueBubbles Apps

With the server up and running we can connect the Android and Windows BlueBubbles apps to start using iMessage! We’ll start with the Android app, which can be downloaded from here.

You’ll need to give the app some permissions when you open it for the first time and make sure you’re signed in with your Apple ID with iMessage on your Mac.

Next, back in the BlueBubbles app on your Mac, click the QR code icon, and then scan it with the phone app.

Tap “Start Sync” in the phone app after scanning the QR code.

After the sync is complete, tap “Finish.”

You’re now using iMessage on Android! You can find a lot of customization options under the three-dot menu on the conversations screen. If you enabled the Private API features, you’ll want to toggle those on.

The Windows app can be found on the BlueBubbles downloads page as well.

Setting up the desktop app is the same as the Android app, but you probably won’t be able to scan a QR code with your PC. Instead, you’ll need to enter the server details manually. You can find those in the Android app under Settings > Connection & Server (same password we created earlier).

Now you’ve got the same BlueBubbles experience as your phone on your Windows PC! Note that there is also a BlueBubbles web app that can be set up in the same way.

Things to Know

One important thing to understand is this essentially turns iMessage into a separate instant messaging service. All of your iMessage conversations will be in the BlueBubbles app, while standard SMS/RCS conversations will still be in your device’s default texting app.

The second thing to know is this is an inherently hacky workaround to get something working that was never intended to work this way. Therefore, you will run into issues. The good news is the BlueBubbles community is very active and helpful on Reddit and Discord. The official BlueBubbles website is also a good resource for up-to-date information.

BlueBubbles is not a perfect solution and it certainly takes some effort to set up. However, it is a solution and you should only have to go through this process once. It’s pretty dang amazing once you get everything working.

RELATED: How to Set Your Default Texting App on Android