iMessage for Windows: A labor of love that will never see light of day (2018)

6 years ago (neosmart.net)

Ok, so a comment on the actual content of the article rather than iMessage in general: I do the kinds of things that the author describes in the article (digging into private implementations of things) and I while I believe all of iMessage is a bit obfuscatory it's not nearly as bad as the author has described it. Really, it's one of the places where Hanlon's razor actually applies: the AppleScript bridge sucks because AppleScript in general sucks, as Apple has let it decay until it stops working entirely. The iMessage team for macOS is already kinda eh, and it shows in the app's architecture and lack of new features for years, as well as its fairly strange usage of a web view (actually the long-deprecated one…) for the main content. The rest of the stuff about private frameworks…I mean, I don't really know what to say. They're not meant to be linked against, they're undocumented, they change and disappear between releases…you really cannot complain about them. They're not Apple making it harder for you, they are just a side effect of how Apple writes its applications and the fact that the entire OS is proprietary. Some do venture into that realm (such as the author and I) and find meaning, but I disagree with the characterization that Apple is fighting against reverse engineers by making you dig through class-dump output and figure out how to marshal your arguments through the right function to make it do what you want.

  • Two of my main gripes with iMessage is the fact that if you scroll back up to read the past it becomes progressively slower and slower to scroll and each time the lag to get a new “page” of history takes longer. The other gripe is search being almost completely useless. Search for say “apples” and it just lists the entire conversation instead of relevant messages containing apples. And then you are left scrolling up endlessly to find said message with the aforementioned slowdown bug being front and center.

    • They've actually fixed that second part: search now shows individual messages mentioning the search term (even if there are multiple in the same thread).

      2 replies →

  • I've been developing for Mac and iOS before the App Store was released, and have experience the author names - in broad strokes, your argument is valid, but it's not correct - errors slip in when describing the Applescript interface as just a reflection of Applescript sucking, describing his issue with Apple having _fragile_ private APIs when his conclusion is the problem is _private_ APIs, and reducing the problems inherent in the walled garden as "making you dig through class-dump output"

    • Ok, to distill my point: I think the author is going beyond a complaint that the system is proprietary and claiming that Apple has purposefully made the code difficult to reverse engineer, which I something I dispute based on the level that the author was working with, which were fairly standard (might I say comparatively well-packaged) private APIs. I say this because I know there is actual Apple-proprietary code that the company has actually put effort into obfuscating; things like FairPlay (and closer to iMessage, IDS, though I have only heard rumors of the latter not having looked at it personally). Thus, at the moment I think Apple is preventing third-party clients of the type described just by virtue of the literal barrier of “this is a compiled blob that I need to interact with and I don’t have source to” rather than “Apple added obfuscation/prevents you from attaching a debugger/encrypts the code at rest with a Blowfish key that is undone when the kernel maps the process into memory” (all of which are things that Apple does actually do in cases where they half-care). Basically, I’m removing the attribution of malice I felt from the article. Does that make some sort of sense?

    • > the problem is _private_ APIs

      There's nothing wrong with private APIs.

      There's a very significant difference between releasing an API publicly, and having a few internal users.

      Public APIs have a high communication burden, but "fixed cost" if done right -- it shouldn't go up much as the number of users increases. They also have strict compatibility requirements that greatly slow, prevent, or complicate changes. They require more stringent security review and comprehensive tests, etc.

      Private APIs can have a low, informal communication burden, but it tends to increase exponentially with the number of clients. They can be changed quickly, but clients have to be changed or and/or tested as well, so again the number of clients is limited. Tests only need to cover use cases the limited set of known clients actually need. It works best when clients are part of the same release cadence, since the price of managing branches is high.

      Also, you can't separate the idea of fragile private APIs from private APIs in general. Private APIs are fragile. That they can change quickly, including breaking changes, is the whole point.

    • Why do people act like having “private APIs” is something evil? The entire purpose of having published public APIs is that they should be something that doesn’t change without a deprecation schedule or warning while the underlying implementation can change without notice. This is software engineering 101.

      3 replies →

  • > The iMessage team for macOS

    Given Apple’s frenetic propensity to be extremely resource conscious, I doubt that team even exists any longer.

    There’s likely some larger messages team that is itching to replace that app with the iOS version via Mac Catalyst... which despite the poor experience of most Catalyst apps on the Mac, would still make for a marked improvement. Goes to show you how poorly maintained the app is.

  • > as well as its fairly strange usage of a web view (actually the long-deprecated one…) for the main content

    iMessage (at least on iOS) allows for arbitrary plugins to generate content for it, right? I presume it does that by having the plugin emit a web-component-like bit of HTML+CSS+JS, that is then embedded into the conversation for all participants, and which can be further rehydrated after initial rendering by just-in-time zero-installing the relevant iMessage plugin on recipient hosts.

    (For anyone who is wondering why this would be necessary just to display some stickers: there are other kinds of iMessage plugins, e.g. games you can play inside the iMessage window, and not just the "you say something, IRC bot says something" kind of games, but full Canvas kind of games.)

  • I got the same feeling reading the post. Seems like it was difficult because iMessage is a private API and a little crufty as all long-lived APIs are. This was more of a lesson in what the code usually looks like inside any software org - messy, full of historical cruft etc etc. but it works and powers a very important feature, so there's little to gain / lot to lose by trying to refactor.

For anyone who is interested in making an iMessage proxy and has time to spend: There is a legitimate way to interact with the iMessage system with a standard protocol. It requires you to have a host iPhone (no jailbreaking needed).

What you need to have is a Bluetooth adapter with MAP (Message Access Profile) support. Your iPhone will treat all messages from the MAP protocol as if they are from the Messages app. This means it will automatically route your SMS as iMessage if possible (you have no say on what the iPhone decides to do, however). As a bonus, you can also use email addresses as recipients with MAP.

A good place to start probing is the WT32 or WT41u module from Silicon Laboratories. It supports MAP, although it looks like the module supports receive-only [1]. I do not know whether you can hack blueZ to support MAP. I've tried to look at it and I don't think the MAP support for blueZ is complete but I could as well be very wrong. A Raspberry Pi 0 as a bluetooth middleman is very sweet, regardless.

Once that Bluetooth middleman is set up, you can use a public server to relay your messages. The scheme will look something like this:

iPhone <--bluetooth--> (WT41+ESP32)|(Pi0+BlueZ) <--wifi--> MQTT broker <--wifi--> your device of choice.

I am relatively confident that this scheme will work. I just don't have time in my hands to do it. So I figured I could share here. Hopefully, some good hacker will do it and publish it. Happy hacking!

1: https://www.silabs.com/documents/public/application-notes/AN...

  • A bit of a shameless self-plug, but it took me 4 weekends to implement iMessage message receiving with BlueZ[0]. Sadly, all I learned about Bluetooth LE and Apple's ANCS will be completely useless when it comes to sending messages, since MAP works over Bluetooth, while ANCS works over Bluetooth Low Energy, and these 2 protocols are almost nothing alike.

    [0] https://github.com/pzmarzly/ancs4linux

  • The only problem is that any messages that the iPhone received while the middleman was out of range won’t get to your PC, but this’d still be extremely useful for quick replies.

    I wonder if the iPhone will accept photos over MAP....

    • > The only problem is that any messages that the iPhone received while the middleman was out of range won’t get to your PC

      That is not a problem. MAP is sort of like the IMAP protocol. You can ask the phone to give you older messages and the iPhone does indeed support that as well.

      Moreover, with this scheme, you will likely have to keep the donor host iPhone and the middleman at home and have them plugged in 24/7. So then your middleman doesn’t have to be extremely clever, although it wouldn’t hurt if it was.

  • Does it support group threads? That’s one of the biggest limitations to Tesla’s implementation of this.

  • Can you _send_ messages this way though? I wonder why Smartwatches don't make use of it. I can't send iMessages from my Pebble, only read them.

  • > What you need to have is a Bluetooth adapter with MAP (Message Access Profile) support. When you send a message from the MAP protocol, then your iPhone will treat all messages as if they are sent from the Messages app.

    What is the “legitimate” reason for this? Bluetooth accessories that can send messages, ideally from the MFI program?

  • This would be extremely useful. I can imagine the only reason why it doesn't exist yet is because few people were aware of this. Thanks for sharing.

    • Haha, I don’t know who else besides me who knew about this. I just happened to discover it the other day... night... month ;-) HN is the first platform that I shared this discovery with.

      I figured that the ideas are free, the important part is the execution. I hope I didn’t accidentally open the Pandora’s box for the spammers and such. My thought is that programmatically sending iMessages is already doable just needs a lot of mucking around. This just makes it much more convenient.

As an iMessage user, I'm happy with a closed ecosystem. I know that's a controversial opinion.

I have dozens of channels of communication, and iMessage is the only one I don't get spam on. I really, really like that. Anyone without iMessage can still contact me the same way, via SMS, and they're all grouped in the same place. But I love that in 10+ years of using iMessage, I've never gotten a single unwanted blue message.

  • I, unfortunately, have sent spam messages via iMessage a long time ago. I did it by faking a Bluetooth keyboard that connects to an iPhone and starts typing out phone numbers and addresses fed from a computer. I did it to mass-send a message to about a couple hundred people.

  • Are you implying that a closed ecosystem eliminates spam?

    > I've never gotten a single unwanted blue message.

    This has not been my experience. While rare I have gotten a few spam messages.

    • It's trivial to use software to automate spam on more open web-based platforms, such as Facebook Messenger. This is a lot tricker with iMessage, where only authenticated Apple devices, with a unique identifier, can connect to the service. Buying truckloads of Apple equipment to spam iMessage is obviously uneconomical(and totally ineffective, given that Apple will swiftly ban any spamming devices), and software hacks to be exploited by spammers are either hard to come by or non-existant, and can quickly be patched by Apple

      Again, not saying spam on iMessage is impossible, but it's clearly very difficult given the relative lack of spammers on the platform.

      2 replies →

  • How does it matter if the spam message is blue or green when it's going to the same app? I get the most amount of SMS spam on iMessage BY FAR. Have never seen one on WhatsApp, Signal or Telegram.

    • > SMS spam

      That's just SMS though - unless you mean blue bubbles being spam. I haven't received any of those, but if you do there's always a "report spam" link at the top of the conversation for senders you've never seen before.

      2 replies →

  • Is there a chance you publicly reveal your other IM contacts? Because as it stands I pretty much never get spam on Instagram, Whatsapp, Line, nor Messenger (FB). I don't even get spam in the "Message Requests" of FB messenger.

    • I get spam all the time on Instagram. Even the private account of the two that I have constantly winds up in random group spam messages. I'm assuming some spammers use scripts or other code to just comb through tons of high-profile account pages' follower lists and then randomly groups userid's to send mass messages to. It's completely frustrating.

      The thing I wonder about iMessages, and Apple, is how I don't get spammed at all with iMessages when I have my ID linked to my normal email addresses, which do get normal email spam. You'd think spammers that do email spam would also be smart enough to try sending to iMessage accounts using those email addresses. But I'm guessing it's a limitation on the sender-side vs. the client side and maybe it's not easy to do due to how iMessages is such a closed-system.

    • The biggest problems are email and phone, which are the two most open systems. I get a decent amount on the ones you listed, but it's not as bad. A few messages a week on each. Most of those have ads, though, too. Different issue, but same problem... a cheap, unavoidable way to force me to see your message. iMessage is the only inbox I feel like I control. No spam, no ads, just friends.

      (Not the point, but I'm looking at my Instapainting as we speak! One of my favorite things I own.)

It is really interesting to see the difference between countries, I travel between Asia and Europe and I knew that iMessage existed, but I thought people dropped it like SMS, years ago. Interesting to see that in a globalized world some differences still persist. I have asked around me to Iphone owners if they used iMessage and they almost never use it. It must be something specific to the US.

Please do not downvote me for not living in the US :)

  • Yeah, I thought the same thing. I had to check, and on my phone I have ever only sent 3 SMSes. I got lots received, but that's like "your token for service xxxx" or "your parcel is ready for pickup" kinda stuff.

    No one uses SMS here (and by extension very few use iMessage). Everyone got mobile data turned on and has for almost the last decade. And then it still cost money to send sms, so other apps won.

  • Yeah, a very US specific thing.

    I live in an international home in the US, and every person except the Americans use Whatsapp. The American compromise is usually Messenger or getting eventually strong armed into using Whatsapp too.

  • Texting was relatively expensive in Europe while it was almost free in the US. Then the iPhone was always more popular in the US as well making it something of a standard.

    I notice that in the International School kids use iMessage more since it's so US/UK oriented and there are too many parents with money.

  • So people don't use SMS outside the US? I knew WhatsApp was big in other countries, but didn't realize no one even uses SMS not iMessage.

    What do people use in Europe?

    • SMS is considered as really obsolete in Europe, even older people use WhatsApp. I think I have not sent a single SMS in the last 2 years. In Asia there are other services like WeChat (China) or Zalo (Vietnam) that are really popular, it really depends on the country. Sending an SMS feels like sendig a fax.

      Regarding iMessage, I guess it's the same as BBM in the late 2000's, if you don't have it people might consider you are not cool enough to talk to them.

    • In Europe: WhatsApp, no one uses SMS anymore because WhatsApp started getting popular when people still had to pay for each SMS sent.

      I currently live in South America, same story: Nobody uses iMessage, everybody is on WhatsApp. Even businesses prefer WhatsApp over phone calls.

      The biggest difference between Whatsapp users in Europe and South America that I observed has to be the crazy amount of people using voice messages to communicate. Why don't you call and speed up the conversation by 50%?

      3 replies →

    • In ex-USSR SMS are dead, except on old "feature" phones. While in capitals a lot of people have iPhones it's share is not more than 50% and so iMessage never really picked up. Currently messaging it split between Viber (mostly older people) and Telegram (mostly younger people), plus some FB Messenger with FB friends. Whatsapp lost out market when it cost 1$ to install (yes, for many it was a decisive factor). iPhone users just install these apps too.

      When traveling in Europe I usually see Whatsapp as a contact method.

      1 reply →

    • I use SMSes for communication with people I don't know. For example, when buying/selling used stuff. For known people it's mostly FB messenger and WhatsApp, but sometimes also Skype and Viber. And then Slack for job related communication.

      Different people use different channels, so I use different apps to be able to talk to anyone I need to.

    • WhatsApp, mostly, but also FB Messenger and Telegram depending on country. I just checked my phone and I have received just one SMS from a human this year.

    • Not Europe, but here in NZ I find most Apple owners use iMessenger. Android owners seem to prefer WhatsApp. However I'm finding more and more people using Facebook Messenger. As an Android owner I only really SMS with my husband's iPhone when I need messages to get through instantly but otherwise I just use whatever app the other person has. SMS is mostly for work contacts now days.

  • In the US I would say it's not only "used" but is the default and almost only message system that most iPhone and Mac folks use. It works really well and it's built into the phone... that, and network effects are strong I guess.

  • I'm in the usa but I don't have an iphone. So I use SMS with certain friends but facebook messenger with other friends.

"The looming demise of macOS as a developer platform".

There's some sentiment these days on HN about this but personally I think it's hogwash. No platform is perfect, but macOS to me is as close as you can get to a developer's dream workstation / laptop.

Remember all those years when we dreamed of a Unix with a proper UI? Well, it exists. Windows doesn't even come close.

I'd rather go Linux before Windows as a developer and hacker.

I know this varies based on industry and countries, but about 95% of developers I work with on a daily basis use Macs. These are everything from Go devs, JS devs to people working on ancient Java EE codebases.

A disclaimer; I haven't actually tried Catalina yet, all my Macs are still on Mojave.

  • > Remember all those years when we dreamed of a Unix with a proper UI? Well, it exists. Windows doesn't even come close.

    You should reconsider Windows. A full Linux kernel and apt-get is way better than Homebrew will ever be.

    • Personally, I find windows to be much more intrusive than macOS out of the box.

      sudo spctl --master-disable is usually enough for macOS to keep quiet.

  • Catalina is a significant downgrade in quality but it's still better than the alternative so your point still stands. My worry is what this means for the future, whether it will keep going downhill.

  • Yep, it absolutely depends on industries and countries, because 100% of developers I work with use Windows.

    • Well, that's a kind of Stockholm Syndrome, if you ask me. I've never personally known of a developer who's switched from MacOS to Windows without immediately going back.

      1 reply →

  • WSL2 on my Desktop is competing with my MacBook as my favorite development environment. Remote-WSL on VSCode works excellently and allows me to do all my development in a seamless Linux environment.

    For me, its the perfect balance between the power of Linux and the day-to-day usability of Windows

  • The only way I see macOS surviving as a professional environment is if they make it available for PCs. Their walled garden style just doesn't work in the open-source world Microsoft is pushing.

I came across this article[1] and this thread quoted[0] in article some time ago. I don't think of iMessage as a walled garden, it is almost like a low fence you can see across with a sign that "you must be this cool to participate".

iMessage is literally the only reason I have not tried an android phone because I don't want to deal with the fallout of all of my chat threads going back to 2011(?) getting disrupted. I don’t think I can come up with a better example of vendor lock-in.

[0] https://twitter.com/BenBajarin/status/1162048581299163136

[1] https://www.fastcompany.com/90391587/why-we-dont-want-you-an...

  • Vendor lock is real, but would that not be rendered moot of other players could offer a superior user experience? Especially when you consider that Facebook, Google and others have a far larger base of potential users than iMessage. As far as I understand, the only iMessage feature that competitors couldn't emulate due to first-party entitlements is the SMS fallback functionality, which while nice, is definitely a feature that people could live without.

    Unfortunately, for whatever reason, every other messaging app I've used just has't lived up to the UX provided by iMessage. Spam is a major issue on all non-iMessage messaging platforms I've used. No messaging app I've used on any platform has performance as fast and fluid as iMessage on iOS. Competing products are often full with ads and useless features that clutter the user interface and degrade performance. And these platforms often have annoying restrictions on media quality. Facebook Messenger, for instance, has garbage quality images and video compression, while iMessage appears to apply no further compression on media files. Using any other messaging app, either on iOS or Android, has consistently been way more of a headache than its worth for me.

    • Google and Facebook may have a larger user base but it is not the in the same realm, e.g. I use iMessage to talk to my family, my close friends, parents from my daughter's preschool, co-workers, people I've only interacted with professionally - vendors etc - all it takes to connect is a phone number which is universal, and like you say it falls back to SMS. Compare that to Facebook where you have to add someone as a friend - which I don't do often because it just feels odd, or Google where messaging ecosystem is a bit fragmented with Allo, Duo, Hangout, Hangout Chat etc. Signal and WhatsApp are actually viable options but compared to iMessage feel heavy and not native, however I do use them both.

      And like you mentioned - spam - I have yet to receive an iMessage spam message. That is pretty amazing.

      3 replies →

    • > Unfortunately, for whatever reason, every other messaging app I've used just has't lived up to the UX provided by iMessage.

      It’s as if there was at least some justification behind the “overpriced” nature of iPhones, despite what many Android enthusiasts want us to believe.

  • Same for me, but with my primary number on Google voice. Google dropped the ball here with an option to compete with iMessage, whether with Voice or Hangouts/Gchat

Funny, I've actually spent a good amount of time tearing apart the iMessage database back in 2016-2017. The queries you end up with are hilarious. Here's one from my website's sample code

```

INNER JOIN chat_message_join ON message.ROWID = chat_message_join.message_id INNER JOIN chat ON chat.ROWID = chat_message_join.chat_id INNER JOIN chat_handle_join ON chat.ROWID = chat_handle_join.chat_id INNER JOIN handle ON handle.ROWID = chat_handle_join.handle_id LEFT JOIN message_attachment_join ON message.ROWID = message_attachment_join.message_id LEFT JOIN attachment ON attachment.ROWID = message_attachment_join.attachment_id ...

```

But it really wasn't that hard. I was able to programmatically send and receive iMessages. The problem (as the author pointed out) was that this changed, and didn't really work for the long. Although, I'm sure it could still be reveng'd – it's a pain in the ass, and (for me) not really worth it... =/

  • I've been working on a new version of [my iMessage bot](https://github.com/inculi/Sue) recently. Previously it was using Applescript handlers on Sierra, now sqlite calls to iMessage's chat.db (I have to give credit to another bot, [Jared](https://github.com/ZekeSnider/Jared) for help in this area).

    I get latest messages with:

    ```

    SELECT handle.id, handle.person_centric_id, message.cache_has_attachments, message.text, message.ROWID, message.cache_roomnames, message.is_from_me, message.date/1000000000 + strftime("%s", "2001-01-01") AS utc_date FROM message INNER JOIN handle ON message.handle_id = handle.ROWID WHERE message.ROWID > #{rowid};

    ```

    and their attachments with:

    ```

    SELECT attachment.ROWID AS a_id, message_attachment_join.message_id AS m_id, attachment.filename, attachment.mime_type, attachment.total_bytes FROM attachment INNER JOIN message_attachment_join ON attachment.ROWID == message_attachment_join.attachment_id WHERE message_attachment_join.message_id >= #{rowid};

    ```

    where rowid is the max rowid from the previous search, and attachments with null mime_types get ignored (YouTube previews, etc). Sending through Applescript still.

  • I did something very similar, extracting the iMessage database. It works by you making an iTunes backup of your phone, and then accessing a specific file in the backup. I ended up with a query that looks like this (only tested with iOS 8, as I sadly lost interest afterwards):

            WITH groupchat_membership AS (
                SELECT cache_roomnames,
                group_concat(id, ', ') AS members
                FROM (
                    SELECT DISTINCT message.cache_roomnames, handle.id
                    FROM message
                    JOIN handle ON message.handle_id=handle.ROWID
                    WHERE message.cache_roomnames IS NOT NULL AND message.is_from_me=0
                )
                GROUP BY cache_roomnames
            ),
            unsorted_messages AS (
                SELECT message.ROWID AS rowid,
                CASE WHEN message.cache_roomnames IS NOT NULL THEN groupchat_membership.members ELSE handle.id END AS recipient,
                CASE WHEN message.is_from_me THEN 'Me' ELSE handle.id END AS sender,
                message.date,
                strftime('%d/%m/%Y %H:%M:%S', datetime(message.date + 978307200, 'unixepoch', 'localtime')) AS human_date,
                CASE WHEN message.cache_has_attachments THEN '<Attachment>' || message.text ELSE message.text END AS text
                FROM message
                LEFT JOIN handle ON message.handle_id=handle.ROWID
                NATURAL LEFT JOIN groupchat_membership
            )
            SELECT unsorted_messages.recipient, sender, human_date, text
            FROM unsorted_messages
            NATURAL LEFT JOIN (
                SELECT recipient, max(date) AS latest_date FROM unsorted_messages GROUP BY recipient
            )
            ORDER BY latest_date DESC, date ASC;

Oh man. Apple has us by the nuts. I love my iMessage. I've been on a macbook for ~10 years, but I just started working at Microsoft and thus have been spending a lot of time in Windows. Multiple times per day I think of something I want to send my wife, like a link to something I'm reading or something, and I look for the iMessage on the dock and of course there is no dock and no iMessage. I want iMessage for Windows. and Linux.

  • I was in exactly this same boat for a long time. I bought maybe a dozen iPhones through the years to upgrade friends and partners from Android just so I could iMessage them.

    Turns out, most of iCloud is not e2e encrypted, critically, notes and pictures and contacts and backups. Apple (and by extension, US military intelligence and FBI/DHS) can read your private notes and see your nudes, and review your address book and message history. I knew I was going to need to switch eventually.

    * iCloud device backup is on by default. This syncs all of your unencrypted iMessage history to Apple. It also syncs all of your conversation partners’ message histories, from their phones, to Apple. It is not e2e encrypted so it suffers from the Zoom Problem: Apple has the keys and can decrypt it, for themselves or the government via the illegal PRISM program.

    * iMessage (despite being e2e) can be arbitrarily wiretapped by injecting a surveillance key because the client trusts the key list from the server blindly, with no UI notifications for the sender on key changes/amendments.

    * I can’t run the client on half of my computers

    * Signal works on ios/android and has desktop clients for all major platforms... and critically now supports iPads. It also has the nice property of being e2e without implicit trust in the server, although hopefully the TOFU model can be improved.

    I switched. I am now signed out of iMessage on all my computers, and it’s great.

    If I can do it, anyone can. I was in as far as one can go.

  • Apple's refusal to support Windows in any real way and have inferior experiences with iTunes etc was absolutely fine when they had best in class solutions for all your work and home needs.

    But in 2020 where their computing products have left so much to be desired this whole system just starts to fall apart. I'm forced over to Windows because they don't make a machine to fit my work needs and when I'm there in Windows I'm not thinking how much I miss iMessage and I wish I'd sacrificed performance and GPUGP just for iMessage, I'm thinking maybe I should stop using iMessage because WhatsApp works great everywhere.

    Then now I've switched to WhatsApp well there's one less reason I have to buy an iPhone next time.

Meanwhile, https://airmessage.org/ seems to have existed for quite some time now...?

  • Android only.

    I don't give a f#%k about the color of my messages but being able to see them from a website/windows desktop would be useful. This doesn't achieve that.

  • This software requires a server component to be run on a mac. It's not self-contained.

    • Doesn't this solution as well?

      > I do now have a fully working iMessage client that runs on Windows and sends messages via an up-to-date macOS High Sierra installation running on my rMBP.

  • Are iMessage communications signed with an apple device specific key? I imagine part of the reason that it has proven to be so difficult to reverse engineer, is that it somehow utilises an apple devices secure enclave?

    • It uses some combination of the serial number and the NIC (at least on Macs, probably not on iOS) to authenticate with Apple. That's why it's fiddly on Hackintoshes.

      They couldn't use the enclave because not all currently supported Macs have it, but maybe in 10 years when all of the old ones fall off the support tree.

  • This appears to be the option he didn't want to use, an always on mac functioning as a proxy server.

    • The "always on mac functioning as a proxy server" is the same type of solution that the author spent the entire article figuring out how to implement. The only time he mentions the proxy server as something to be avoided is when the he talks about not wanting to be forced to run that proxy server on an older version of OSX.

      > But I wanted to do this and I wanted to do it right. I wanted an elegant approach that I could deploy on the same machine I still used from time to time, without being stuck on an ancient (and insecure) legacy version of OS X that could suddenly be blocked from the iMessage network at any point.

SendBlue will be launching soon. They support sending iMessages at scale, similar to Twilio's SMS service.

Not sure how they're doing it.

https://sendblue.co/

  • Cloud + a probably similar method, but, the process the author used is not efficient in figuring out the private frameworks work. You could do a few things I think that would allow you to debug the framework calls & iMessage itself to understand what is actually going on / how it’s used.

  • I'm curious if they have a farm of iPhones somewhere to host this off of. They are sending the iMessages from phone numbers -- not email addresses, which means they didn't just get a bunch of Mac Minis and do it the (probably easier) way.

    Jailbroken iPhones where you can automate the UI and (maybe?) access any private Messaging API Apple left laying around would make this scalable though.

  • Guessing that they are using Apple Business Chat. We've looked at using it, too.

    • Apple Business Chat doesn't seem to be Blue though, at least in my experience with Apple Card Support. Messages seem to be Black, unless that's exclusive to talking with Apple (maybe businesses can have configurable color schemes).

> For example, hackintosh PCs that act identical to genuine Mac hardware can use all macOS features except iMessage, which has been locked – so far as we can tell – to only allow network activation on devices that have “blessed” NICs that officially shipped with Apple hardware.

This isn't true! The computer I'm typing on right now can send and receive iMessages just fine, and I'm not using a donor MLB. You just need to get all of various parameters right, so Apple's servers are presented with logical information.

  • The information was circa 2017, I do believe the kexts and bootloaders for hackintosh configurations have since improved significantly.

    • Not in this regard. I don't think there was any point at which iMessage on Hackintosh was impossible without a donor, but I've personally been using it since ~2015.

      2 replies →

Much as I applaud the effort and ideal to make something open, I guess you acknowledge that it's crazy to think Apple will ever cooperate.

iMessage, plus pressure on your friends to not break the text thread with green non-Apple bubbles, Facetime, tie-ins to the Apple hardware, Find my Friends, etc. are among the most important loyalty factors and moats against people leaving the Apple ecosystem.

Especially with people getting (as you admit) less satisfied with the hardware, they would be fools to open this up and let people leave.

> the pure simplicity and sheer genius of iMessage’s “SMS backwards-compatibility” approach that upgrades iPhone-to-iPhone communications to iMessage while transparently falling back to SMS or MMS where iMessage was not an option.

This "simplicity" comes with a price. If your primary SMS device is non-Apple and you sign into iMessage from an Apple device, iMessage will start eating your SMSes from anyone texting you from an Apple device.

  • Yup. I temporarily switched from an iPhone to an Android BlackBerry when the one with the slide-out keyboard first came out and I did not receive SMS messages from iOS users for the entire duration.

I found training a bunch of birds to take notes to people for me to be much easier. I am in the process of training them how to use the printer and scanner too so i can text people who on my computer too.

I wonder what happened to “Business Chat”. It was announced on WWDC in 2018 and I have seen no progress since. It’s a shame. The potential of it is huge I believe, but Apple has a different focus it seems.

  • It exists for some retailers, like Home Depot. It doesn’t work like I would expect though, in HD’s case it looked like it was routed through a Salesforce extension.

  • I used it a couple months ago with Delta Airlines, and it was a great user experience. I wish all companies would use it.

  • It still exists; Apple themselves uses it for support and I hear some third parties have adopted it. (Though I haven't heard of many people actually using it…)

I feel like there was probably a way to publish this. Maybe the author couldn't brand it with their name, logo and other identifying information, and clearly that's a compromise they weren't comfortable with. That is, of course, their choice, but the large number of screenshots of the resulting application felt like a bit much. This work could increase accessibility to iMessage e.g. for those with physical or other disabilities were there a way to use it, and the post just ended up feeling like an exercise in navel-gazing to me.

> As someone that has never embraced the mobile craze, I sorely missed the ability of texting (or “iMessaging”) from my PC, and came to absolutely despise having to drag my phone out of my pocket and text from its cramped display, constantly fighting autoincorrect and embarrassing myself with typos and misspellings.

An alternative solution is to use a Bluetooth keyboard, possibly with multi-device support and device switching shortcuts, attached to an iPhone or iPad sitting on a stand.

  • As someone who learned to properly type on a physical (PC) keyboard, it's mind blowing to me how so many people swipe so many letters on screens.

    Ignorance is bliss I suppose.

    First I had Blackberry Blend around 2014 (SMS and BBM messaging through PC), now there's Signal for Desktop and the Your Phone Microsoft thing.

    The wheel keeps getting reinvented.

    I wonder when peer2peer messaging will become popular again. It's how Skype started out and became big back in 2003. Offered way better call quality and privacy, because: no server and peer2peer.

  • I did that, actually! Ran into some problems with the ux and lots of issues switching between soft and hard keyboards. I don’t know if the situation has improved since.

Extremely well written piece.

Btw, I expect Google, Microsoft, Facebook or Amazon to offer you their new Chief of Messaging Infrastructure role in 4 days.

I feel his pain.

I run a whole MacOS VM _exclusively_ for iMessage.

Anyone know the reason why there's no iMessage for windows? Is it supposed to act as some kind of gateway drug into the Mac ecosystem?

Apple seems to have quite a few of these 'unspoken unfeatures'. Perhaps someone can tell me why there are no web browsers allowed on AppleTV devices?

  • Its because they use peer pressure to get you to buy an apple device. You can invite an android user to an imessage group but it apparently downgrades the feature set of the group for everyone, they also color messages from android users differently. Its all designed to discourage talking to android users so they eventually buy an iphone.

    • SMS is colored differently (green) than iMessage (blue), regardless of the device on the receiving end. I'm not sure how they would even know the recipient is on Android.

      If I send an iMessage to a friend's iPhone when they do not have service it automatically downgrades to SMS from iMessage. My brother didn't run iMessage for years so group chats that include his iPhone were still SMS based.

      In a group chat with non-iMessage users everyone gets downgraded to SMS. I'm not sure how else it would even work?

      It doesn't discourage talking to users with an Android or any other phone. I do that all the time, it's all in the same app. If they wanted to put up barriers they could do that but instead it's totally seamless.

      3 replies →

    • The Mac client already drags years behind the iOS client, I don’t have a lot of faith in Apple’s ability to maintain a Windows version even if they wanted to.

      On the Mac side it might catch up in the next release by throwing out the original version and replacing it with a Catalyst port, but there’s no similar solution to that for Windows.

      Nor can I see them de-emphasizing the 3rd party app integrations to make the service available to people who aren’t Apple’s customers on platforms that Apple doesn’t control.

      1 reply →

    • Liked "Its all designed to discourage talking to android users so they eventually buy an iphone."

      If you own an Android you will understand the above. Very annoying!

      3 replies →

    • Yes, everyone knows this but you're not supposed to mention it. If you have green bubbles, you risk being a social pariah. Android use among teenagers, who are most susceptible to peer pressure, is >80%. Also I know several guys who switched to iPhones and suddenly had a much better sex life. It is what it is. Think of Apple buy-in like a tribal tattoo or rite of passage for young people.

      If Apple released iMessage for Android or made it compatible with another protocol like RCS/WhatsApp/Signal/etc., then Apple would lose half of its market cap. I'm not exaggerating.

      2 replies →

  • Apple is caught in the constant push/pull of "we're compatible with stuff" vs. "there's a reason why you buy a Mac." Curating apps and keeping iMessage for Mac users falls into the latter category right now. Might be different tomorrow.

  • Apple is the biggest example in the tech industry right now of vertical integration; that a company controls not only the end product that they sell but also the component parts.

    That's why it's best to think of Apple not as a software company but as a vertically integrated hardware company: Apple provides services (iCloud, iMessage, FaceTime, Siri) to add value to their software (macOS, iOS, watchOS, tvOS) in order to add value to their hardware (Macs, iOS devices, Watch, Apple TV).

    To answer the question of why web browsers aren't allowed on Apple TV, it's because Apple does not deem that they add value at any of those levels — the Apple TV is not positioned as a general purpose computer but more as a sort of console, suited to consuming multimedia and playing games but not for general purpose web browsing.

    But it isn't as though Apple hasn't anticipated the desire to see web content on the big screen. That's why macOS and iOS devices support AirPlay Mirroring.

    I think there are a couple of generations that are unused to the idea of vertical integration in technology and view it with suspicion. Once upon a time, say the 80s and prior, it was the norm: you bought a computer, could only use their OS, and in certain cases could only use their software.

    IBM PCs and MS-DOS broke the industry free of that mould in a major way, but Apple has proven to have some success with it — in fact, it's almost the entire value of what they propose: tight integration between hardware and software to provide, as Apple sees it, the best experience.

    To come back to the first question: iMessage is both a service and software. It benefits Apple more to use iMessage to sell Macs and iOS devices; there's no benefit to Apple for people to use iMessage on Windows (or Android, Linux, etc.). Apple is, remember, not a services company; it is a hardware company. iMessage "sells" macOS and iOS which, in turn, sell Macs and iOS devices.

    In fact, I don't even think Apple sells hardware. Apple sells experiences. That might sound airy-fairy, but it corresponds well to their approach.

    Contrast this with iTunes. iTunes exists on Windows in order to sell iPods (and later, iPhones and iPads) and multimedia content to Windows users. This benefits Apple in a way that allowing iMessage on Windows would not.

    Same reason why Apple TV+ and Apple Music are available on competing television devices and on Android: selling subscriptions to non-Apple users still provides Apple with a benefit (and valuable opportunity to advertise) that iMessage on other platforms would not.

    This approach exists in sharp contrast to both the Microsoft of the past and present, as well as web-based service companies. Their goals are different.

    Microsoft made MS-DOS and Windows available on as many types of computers as possible in order to sell Windows licences; Apple tried this once in the 90s and didn't make enough money to justify the operation.

    Services like Facebook, that freely provide their messenger services on practically all platforms, have a different measurement for whether or not there is any benefit: they aren't trying to sell you on hardware, they're trying to sell data to advertisers.

    There are other examples: LINE, for instance, doesn't necessarily need to sell users' data to make money; instead, LINE operates a content store selling additional functionality.

    Therefore, it's impractical to compare Apple's approach with iMessage to that of competing messaging services. The apps and associated services serve different purposes to meet different ends.

    To conclude: iMessage is there to make you buy an iPhone.

  • It's the same reason BlackBerry refused to make BBM available on other platforms (although I believe they actually did just that a couple of years ago when no one even remembered what BlackBerry was, perhaps after the company name was sold to a different manufacturer).

    • BBM was released on Android and IOS in 2014 (six years ago), but it never caught on. It's still around in the enterprise space, but barely.

      And the company name was never sold to a different manufacturer. BlackBerry allowed TCL and an India-based company (I can't remember the name) to sell BlackBerry-branded phones running BlackBerry software, but that's all.

      1 reply →

Having had this problem myself, my first thought was VLC or some other kind of Remote Desktop solution. Surely I can ‘stream’ a window from my OSX host and not care about the implementation or boobytraps?

In the end Windows was a complete fail for me so I never pursued it.

« A year and a half ago, I heeded the growing warning signs that indicated the looming demise of macOS, née OS X, as a platform for developer and true computer enthusiasts, and set about trying to find a new ecosystem.» The power of synthesis

It’s weird to see a project you’ve thought about for so long actually completed. I’ve toyed with it a little, but I only dug as far as AppleScript.

This gives me a bit of hope, I might take another crack at it sometime.

If there was an easy way to get iMessages in Windows 10 I guess it would just increase the number of people who consider switching from Mac? Maybe Apple can't fit that into their business model?

I have been a Windows user and an Android user for a long time, and I never seem to have the need to venture into the Apple ecosystem. I actually did have an Apple phone for several months and it was okay. No complaints. But there's just not an ecosystem that I need. I have everything I need without the Apple ecosystem. There's nothing that gives me passion to use something that is exclusively an Apple product. In a way it's kind of weird. I'm not sure what I'm trying to say here. But I'm sure there's other people like me.

So, I may be missing something, but...

You can get imessage for windows with way less effort and full functionality. Just have a VNC window to a mac with imessage on it. There you go, every functionality of imessage on windows. All it requires is a mac mini.

  • That's not iMessage for Windows.

    "You can get Adobe Photoshop for Linux, just run a Windows machine and use RDP to connect to it. All it requires is another machine entirely and for you to be on the same network."

If ever Apple needed to open source server and client code for a public good it is with imessages. Yes it has clear limits with a centralized server, but it is realistically how a lot of “secure” messaging happens and it’s very difficult to endorse being tied to expensive hardware.

You can say the same about facetime: it is clearly higher quality than competitors in every experiment I’ve tried, but their refusal to interact with the wider software community means we all use zoom or skype instead for personal chatting. These are tools; they should be effectively free and universal.

  • Facetime was announced as an open standard to be. It is speculated that it never came to light because of a patent dispute[1].

    [1] https://9to5mac.com/2018/06/06/make-facetime-an-open-standar...

    • Apple set up colocated servers across the world and changed the Facetime protocol significantly to work around a single patent (a patent for direct device to device communication of all things).

      I can’t imagine a patent dispute actually stopping them if they were firm on making FT an open standard.

      10 replies →

    • Patent troll strikes again!

      Maybe we should call it patent fraud and make this kinda thing illegal? Patents should be for companies actually making products to get a market edge of sorts. Not a portfolio of things you never intend to build but instead berate other companies for cash over. Its okay if they are actually still in the process of building the thing but if your company has one single employee and 0 products...

      Also wondering where WebRTC stands against that patent.

      4 replies →

  • iMessage motivates people to people buy iPhones instead of Android when everyone else in a social circle has it. Why should Apple give up on that? What will Apple gain from making it ubiquitous? It would in fact disappoint many people as now they can't use their phone to distance themselves from the people who don't have that blue circle.

    Note that I'm arguing from Apple's perspective here. From my own I believe they should absolutely open it up.

    • > iMessage motivates people to people buy iPhones instead of Android

      Why, though? Does your average iPhone user actually care if the bubbles they see in their chats are blue or green? If so, why?

      Note that I'm talking about average users. Sure, there are likely a bunch of privacy-conscious users who believe in Apple's commitment to security and privacy and prefer iMessage on those grounds. But otherwise, why?

      > It would in fact disappoint many people as now they can't use their phone to distance themselves from the people who don't have that blue circle.

      If that's truly the case, I don't think I'd want to be friends with people who place importance on such superficial, trivial things.

      Full disclosure: I've been an Android user for 10 years and the closest I ever got to owning an iPhone was an iPod Touch I stopped using in 2012 or so. SMS is fine for my needs most of the time, though MMS for group texting is ridiculously unreliable so I try to funnel people to Signal or WhatsApp for those use-cases.

      I guess I just don't see a closed iMessage as that huge of a competitive advantage for Apple. But presumably they know better as to what drives sales.

      193 replies →

    • iMessage is ABSOLUTELY brilliant if your family and friends are all on iPhones, which I'm pretty sure is fairly common in most Western countries.

      Regardless whether you agree with that, it is super practical for me and my family. It also means we don't have run other chat software like WhatsApp.

      The whole experience is just so seamless and well integrated across your devices. Everything from regular messages, voicenotes, sending cute animojis to your wife, or doing a FaceTime with my 102 year old grandmother. I do that on a daily basis. And I can easily continue a conversation from my computer, or even respond from my Apple Watch when exercising.

      I am still on WhatsApp though as there are millions of users worldwide, but I keep notifications off and check it only once a day.

      7 replies →

    • I have an iPhone. I have a MacBook. I have AirPods. I have the watch. I use a PC for work and am considering moving away from the iPhone because I miss texting on my desktop.

      They could bind a windows iMessage install to your iPhone the same way Signal/whatsapp do.

      1 reply →

    • > What will Apple gain from making it ubiquitous?

      Right, I'm trying to understand Apple's motivations, and this question applies not only to iMessage but their general approach regarding macOS, apps, app store, the proprietary/locked-down nature of their software and hardware.

      The opposite of ubiquity would be "exclusivity" - and that does explain a lot. The reasoning must be that there is value in making their apps exclusive to their own OS(es). The same way you can't (easily) run macOS on any old PC, or the way their hardware doesn't allow users to repair or extend it.

    • Does it? iMessage is really US thing. The consequence of this strategy is that no one uses it outside the US. Whatsapp is a lot bigger and the leader in this market. Zero chance that will change because of this strategy.

    • They could offer a proxy service that lets people interact with conversations in a secure way but still keep the bubble green.

    • I have noticed that many of my iPhone friends start using WhatsApp for group and personal chats as default. I don’t get why. I switch back to iMessage in those cases, which irritates people too. I think iMessage would be way more successful if it was available on other platforms.

    • You’re absolutely right, that is a large part of why I keep using iOS. It’s also a very common exciting part of switching from android based on my own social circle.

    • If you have ever talked to an iPhone user, you will know performance, features, and quality are the last things on their mind.

      The phone must be pretty and have the Apple logo on it. They might repeat the marketing about privacy and security, but if the person actually cared about either, you'd never use Apple products.

      12 replies →

    • Because tying your company to one product is an economic disaster. It's very clear that drop in iPhone sales causes a very direct impact on Apple and the reason why they started moving towards SaaS model. But their SaaS isn't big enough yet. If today China retaliates with ban on Apple, the company is pretty much dead because no other country is capable of manufacturing at the scale Apple needs it to.

      5 replies →

  • Who's "we all" here? The "wider software community"? There are certainly tens of millions of users of FaceTime; I'd wager more than the entire population of the "wider software community".

    I don't disagree with the ideological position but personally I find it harder to argue with the economics without having also created and operated a billion dollar services and hardware business.

    Interestingly I can't find recent authoritative DAU/MAU stats for iMessage or FaceTime; the last time Tim Cook seems to have quoted numbers was in 2014: https://www.ubergizmo.com/2014/02/apple-handles-40-billion-i...

  • Absolutely have been saying this for years. It’s ridiculous for iMessage to be a walled garden. How would it be if emails from iPhone could only go to other iPhones? Yet shrink the email and put a blue bubble around it and that’s just fine.

  • I think Google Duo and WhatsApp are the competitors to Facetime. Zoom is more of a competitor in the video conferencing space along with Google Meet, Skype for Business and Cisco WebEx. Regular Skype is more of a competitor in the all-in-one consumer messaging space along with Google Hangouts.

    Unfortunately all are proprietary and it was the previous generation, iChat and Google Talk, that were based on the open XMPP standard.

    • Is Google Duo much of a competitor? Hangouts is circling the drain, Allo is dead, and everyone I know is confused by Duo, including Google employees. If you made a list of the ways Google employees made video calls to each other outside work, I’d be suprised if Duo were in the top three.

      9 replies →

    • Would have agreed pre-covid but post-covid it's clear than Zoom is actually a great system for social calls too and the distinction between business orientated video chat and social isn't as harsh as it seemed.

      I'm from a big social drinking country and our Friday bar visits are now just a link we can share into a group chat and people can drop in as they please, you can share things from your screen and it all just works great.

  • the state of messaging is quite depressing. You have apple doing its own thing and with apparently no intention to have its communication service on all the major platform.

    Google doing what google does and running like an headless chicken creating a new service every minute instead of creating one good one.

    Last time I tried to launch WeChat, you had to surrender to it a disgusting amount of personal information to even launch the app.

    You have some outliers like Telegram or Signal, but good luck getting all your contacts on there.

    As a result I just have a dozen of messaging apps installed on my devices.

  • Apple built iMessage and FaceTime to move Apple devices. Why would or should they open it? Not to mention, it is probably tied into the hardware at a deep level — it clearly works much better on more modern phones, and better on iOS than MacOS.

  • I'd read about an article how there is a significant "dark" black hat companies which do nothing but dig up into the open source codes to find the exploits. They invest big time to develop proprietary tools for autonomous scanning of latest vulnerabilities. Such exploits then get sold for millions of dollars. They do open source code scanning to everything from popular Python packages to popular Chrome extensions to Office plugins to Linux kernel to open source phone apps.

    One might think that opening the source will lead to code reviews by many and fix security bugs. In my own experience with open sourcing few projects, I've not seen that happening. Vast majority of contributors aren't willing to spend a lot of time in reviewing security issues and fixing for you. In fact, virtually all contributors will send you patches that are often half assed and have security issues which you might unknowingly accept because all tests are passing, you don't have much time and in code reviews everything look ok. For things like iMessage, I suspect billions of dollars worth of important decisions are made by everyone from Jeff Bezos to the President of USA. In my opinion, open sourcing something like this would give a handsome payday to many black hat hacking groups including state owned agencies.

    • So you would prefer to keep open exploits around and approach with security-by-obscurity?

      Somehow I think Apple can muster the resources to respond to vulnerabilities in exactly the same way you’re claiming they respond to open source exploitation. You may have a point with much smaller projects, but this is apple and they can easily outfund exploiters before there’s mass exploitation according to your analysis of increased attention.

      2 replies →

  • Even in an all Apple ecosystem my family is using Zoom because we can't add multiple Facetime people to a call for some reason and there is no messaging explaining why.

    Probably one of us running an old OS or something (All devices are recent) but whatever why should I waste my time debugging that with my elderly parents when Zoom just works.

  • The main selling point of Zoom seems to be their handling of large group conferences though.

    • FT goes up to 32 participants now I think. Well before that you're into 1-many kind of mode vs a 1-few, they're very different experiences and different use cases.

    • Absolutely a good point. You can’t have “FaceTime” parties in the same way you can on zoom.

Steve said iMessage would be an open standard way back in the 2000s. Still waiting.

  • IIRC, it was Facetime he said that about. I believe it ended up there were legal obstacles (plus he allegedly made the statement off the cuff), but I could be wrong.

    • You probably are. He was on stage during a presentation so no 'off the cuff’ pretense occurred.

>A year and a half ago, I heeded the growing warning signs that indicated the looming demise of macOS, née OS X, as a platform for developer and true computer enthusiasts,

I stopped reading there.