Skip to content

Add IFTTT support for iOS - #2091

Merged
abrignoni merged 1 commit into
mainfrom
feat/ifttt-ios
Sep 2, 2026
Merged

Add IFTTT support for iOS#2091
abrignoni merged 1 commit into
mainfrom
feat/ifttt-ios

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds IFTTT support for iOS. Four artifacts from com.ifttt.ifttt, readable now that the vendored parser handles Realm's pre-Cluster layout:

  • Account (class_UserRecord): login, email, account id, time zone.
  • Applets (class_LiveConnectionRecord): the connected applets, with the service joined through the row's own primaryService link and the publisher as the service supplied it.
  • Connected Services (class_LiveServiceRecord).
  • Detected Apps: the service ids under the app-detector.my-apps key of Library/Preferences/com.ifttt.ifttt.plist.

The connected applets live in class_LiveConnectionRecord, not class_AppletRecord, which held no rows. class_ActivityItemRecord, class_WidgetRunRecord and class_RegionEvent were empty too, so no applet run, widget run or geofence event was recovered; the notes state that rather than leaving the absence to read as an omission.

An iOS data container is GUID-named, so the Realm path pattern cannot carry the bundle id. Every candidate Documents/default.realm must hold an IFTTT class before it is read. Verified both ways: rows on the tested extraction, and none on one holding three other apps' Documents/default.realm.

Detected Apps is reported as stored and does not assert that an entry means the app was installed. Only one extraction holding IFTTT was available across 28 Android and 24 iOS corpora, so the list could not be compared against a second device.

🤖 Generated with Claude Code

Four artifacts from com.ifttt.ifttt, readable now that the vendored parser
handles Realm's pre-Cluster layout:

- Account (class_UserRecord): login, email, account id, time zone
- Applets (class_LiveConnectionRecord): the connected applets, with the
  service joined through the row's own primaryService link and the publisher
  as the service supplied it
- Connected Services (class_LiveServiceRecord)
- Detected Apps: the service ids under the app-detector.my-apps key of
  Library/Preferences/com.ifttt.ifttt.plist

The connected applets are in class_LiveConnectionRecord, not in
class_AppletRecord, which held no rows. class_ActivityItemRecord,
class_WidgetRunRecord and class_RegionEvent were also empty, so no applet
run, widget run or geofence event was recovered; the notes say so rather
than leaving the absence to be read as an omission.

An iOS data container is GUID-named, so the Realm path pattern cannot carry
the bundle id. Every candidate Documents/default.realm is required to hold
an IFTTT class before it is read. Verified in both directions: on the tested
extraction it returns rows, and on one holding three other apps'
Documents/default.realm it returns none.

Detected Apps is reported as stored and does not assert that an entry means
the app was installed; only one extraction holding IFTTT was available, so
the list could not be compared against a second device.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit 41b1ce2 into main Sep 2, 2026
10 checks passed
@abrignoni
abrignoni deleted the feat/ifttt-ios branch September 2, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant