Archive for October 18, 2024

Friday, October 18, 2024

exit(173) Receipt Fetching Deprecated on Sequoia

Jeff Johnson (Mastodon):

[If] you compile your app with the macOS 15 SDK in Xcode 16, and your app exits with the status 173—the traditional way to handle Mac App Store receipt validation failure—then macOS 15 Sequoia will show the user an alert[…]

The alert is terrible for at least two reasons. First, the text is total nonsense to end users and meaningful only to app developers. Second, the text is inaccurate. Exiting with status 173, for example returning 173 from the main() function, still works! A new, valid Mac App Store receipt will be fetched, if possible. In this respect, the only difference between Sonoma and Sequoia is that Sequoia shows the annoying, confusing, inaccurate alert to the user.

As far as I’m aware, the new macOS 15 behavior has not been documented by Apple anywhere.

The WWDC session only says:

If your app still uses the Original API for In-App Purchases, I have an important update to share with you. Beginning with iOS 18 and aligned OS releases, the Original API for In-App Purchase is deprecated, including the unified receipt. Your existing apps will continue to work, but the legacy API won’t receive any enhancements or new features in future operating system releases.

But this doesn’t mention the scary alert, and it’s not obvious that exit(173) is part of the IAP API because it was introduced for up-front purchases before IAP even existed.

Johnson has investigated the documentation history. Apple no longer mentions exit(173) at all, never saying that it was deprecated, and the current documentation recommends using StoreKit 1, which is is deprecated.

According to the WWDC session, Apple wants apps to switch to StoreKit 2, which is a Swift-only API. Apps targeting older versions of macOS would need to bundle the entire Swift runtime just to download the Mac App Store receipt.

It’s not yet clear to me whether Sequoia shows the alert for apps (linking with the macOS 15 SDK) downloaded from the App Store or only when testing such apps. I presume it’s only the latter because I have not seen a huge outpouring of users mentioning the alerts. However, it’s also possible that few apps have been shipped using Xcode 16 so far, e.g. because doing so will make apps that use Quick Look crash.

Previously:

Update (2024-10-21): Alexander Blach:

Mona (@MonaApp) seems to be a Mac App Store app compiled with the macOS 15 SDK (DTSDKName is “macosx15.0") that does call exit(173) on launch when the receipt is not present in its app bundle.

It does not show the deprecation alert for me and successfully refreshes the receipt.

So it looks like calling exit(173) in the production environment still works as before.

Click-to-Cancel

Thomas Claburn (MacRumors):

The US Federal Trade Commission on Wednesday announced a final “click-to-cancel” rule that aims to simplify the process of ending unwanted subscriptions to products and services.

[…]

“Too often, businesses make people jump through endless hoops just to cancel a subscription,” said FTC Chair Lina Khan in a statement. “The FTC’s rule will end these tricks and traps, saving Americans time and money. Nobody should be stuck paying for a service they no longer want.”

FTC (Hacker News):

The final rule will provide a consistent legal framework by prohibiting sellers from:

  • misrepresenting any material fact made while marketing goods or services with a negative option feature;
  • failing to clearly and conspicuously disclose material terms prior to obtaining a consumer’s billing information in connection with a negative option feature;
  • failing to obtain a consumer’s express informed consent to the negative option feature before charging the consumer; and
  • failing to provide a simple mechanism to cancel the negative option feature and immediately halt charges.

While it was good that in some cases customers could get easier cancellation by paying for an additional layer such as the App Store, I think it makes sense to just make these bad practices illegal.

Karl Bode:

Cemented by AOL in its heyday, and perfected by everybody from the Wall Street Journal to your broadband and wireless phone provider, corporate America loves to make it as annoying as possible to simply cancel services, often actively hiding any way to do so.

[…]

Most of the FTC’s new guidelines will go into effect in 180 days, with some in effect within 60 days after publication in the Federal Register. The rulemaking updates started way back in 2019. There’s a fact sheet here that explains the proposal in more detail.

[…]

Trade groups representing everything from media companies and telecoms to car wash operations called the rules “burdensome and unnecessary.” Publishers and Advertisers like the News/Media Alliance also complained about the rules, insisting they would “confuse customers“ (one alliance group member, the WSJ, worked for years to make subscription cancellation as annoying as humanly possible, and didn’t seem too upset about consumer confusion at the time).

Previously:

Netscape at 30

Jamie Zawinski:

According to my notes, it went live shortly after midnight on Oct 13, 1994. We sat in the conference room in the dark and listened to different sound effects fired for each different platform that was downloaded. At some point late that night I wandered off and wrote the first version of the page that loaded when you pressed the “What’s Cool” button in the toolbar.

[…]

This beta release was an unannounced surprise. Prior to this, everyone assumed that what we were doing was going to be a standard for-sale product where you sent off your $35 and then some time later got a disc in the mail with a license key.

[…]

These anniversaries keep piling up, so I don’t really have a lot to add, but check my NSCP tag or the Previouslies for more, particularly the links in this one.

John Gruber:

The thing that confuses people sometimes about new platforms is that while the platform and its clients are different things, you usually need both to be great for the whole thing to succeed.

a16z:

In this special episode, Marc and Ben dive deep into the REAL story behind the creation of Netscape—a web browser co-created by Marc that revolutionized the internet and changed the world. As Ben notes at the top, until today, this story has never been fully told either in its entirety or accurately.

In this one-on-one conversation, Marc and Ben discuss Marc’s early life and how it shaped his journey into technology, the pivotal moments at the University of Illinois that led to the development of Mosaic (a renegade browser that Marc developed as an undergrad), and the fierce competition and legal battles that ensued as Netscape rose to prominence.

Previously: