Commit Graph

118 Commits

Author SHA1 Message Date
Riley Testut
2ff5afa22a Replaces PatreonAccount.isFriendZone with ManagedPatron
Rather than store both the current user’s Patreon account and all cached Friend Zone patrons in the same table, we now store Friend Zone patrons in the new ManagedPatron table. This avoids the need to distinguish between the two at runtime.
2022-04-18 15:46:35 -07:00
Riley Testut
60005a3d7f Throws URLError.fileDoesNotExist for 404 responses 2022-04-14 18:29:34 -07:00
Riley Testut
be31f40288 Updates Keychain.patreonCreatorAccessToken via UpdatePatronsOperation 2022-04-14 17:58:06 -07:00
Riley Testut
3fda2bb400 Caches Friend Zone patrons to offset slow loading time
The Patreon API doesn’t have a way to fetch just the patrons belonging to our Friend Zone tier. Instead, we need to fetch ALL patrons (including inactive ones) and filter out those not in the tier. This is very inefficient, and takes over a minute to complete as of April 14, 2022, due to the number of patrons we have.

We can’t do much to change this, but AltStore will now at least cache the fetched patrons with Core Data. Additionally, AltStore will only perform this long fetch whenever the Friend Zone list actually changes, rather than every time the Patreon screen appears.
2022-04-14 17:56:36 -07:00
Riley Testut
faf5123498 Adds FetchTrustedSourcesOperation 2022-04-14 15:27:57 -07:00
Riley Testut
64cf6fb443 #ifdef’s out libfragmentzip and AppleArchive usage for simulator builds
Neither are supported by the iOS simulator.
2022-04-13 20:41:38 -07:00
Riley Testut
789e6200f4 Disables app group feature if app has no app groups
We can’t remove all app groups from an App ID once one has been assigned, but we _can_ disable app groups completely for effectively the same result.

This fixes some apps having permanant access to AltStore’s own app group after being (de-)activated.
2022-03-31 12:50:50 -07:00
Riley Testut
d5c7fd0869 Supports installing Fugu14-based jailbreaks on iOS 14.3 2021-10-26 11:21:44 -07:00
Riley Testut
96c6cdc9c7 Adds basic error handling when downloading OTA firmware 2021-10-25 23:13:25 -07:00
Riley Testut
8e726e7d70 Supports installing Fugu14-based jailbreaks
If a jailbreak app contains the relevant Fugu14 entries in its Info.plist, AltStore will automatically guide the user through the Fugu14 untether process before installing the jailbreak.
2021-10-25 22:27:30 -07:00
Riley Testut
47065eb2aa Embed ALTServerID in Info.plist if app uses AltKit 2021-10-04 16:06:32 -07:00
Riley Testut
971199114b Prefers revoking existing AltStore certificate (if it exists) 2021-10-04 15:51:58 -07:00
Riley Testut
3fe6b06387 Adds "Enable JIT" context menu action for active apps
Allows users to manually enable JIT for apps that don't explicitly support AltKit.
2021-09-03 13:57:15 -05:00
Riley Testut
1ff3395cfb Replaces ALTDeviceID Info.plist entry (if it exists) with correct UDID when resigning apps
Allows apps to use AltKit, which needs to know the current device's UDID to communicate with AltServer.
2021-09-01 16:48:31 -05:00
Riley Testut
d540ce6f42 Downloads app dependencies listed in AltStore.plist
Allows apps to download additional dependencies before installation, such as plug-ins.
2021-02-26 16:47:33 -06:00
Riley Testut
af8d1b1969 Moves minimum iOS version check to VerifyAppOperation 2021-02-26 15:25:12 -06:00
Riley Testut
b9805b1b95 Renames ALTLocalizedError.errorFailure to failure
Better matches LocalizedError’s failureReason, recoverySuggestion, and helpAnchor naming.
2021-02-26 15:25:10 -06:00
Riley Testut
cda73d8088 Fixes “App Group does not exist” error 2021-02-01 16:53:51 -06:00
Riley Testut
2a84551232 Fixes widget not updating after refreshing AltStore 2020-12-07 16:13:10 -06:00
Riley Testut
57672b9d2f Prefers paid developer teams over free teams 2020-12-03 16:06:04 -06:00
Riley Testut
0205c3e969 Updates AltSign dependency 2020-12-03 16:06:03 -06:00
osy86
d96e2534cc Hide private entitlements on >= iOS 13.5 (#415)
iOS 13.5 fixes the psychic paper hack so showing the private entitlement
warning popup is confusing to the user. Additionally iOS 14 checks the
entitlements on installation, so we should not copy the private entitlements
on iOS 14.

Depends on https://github.com/rileytestut/AltSign/pull/15

Co-authored-by: osy <osy86@users.noreply.github.com>
2020-11-03 14:02:19 -08:00
Riley Testut
19bf4355ee Adds ability to change sideloaded app icons 2020-10-01 14:09:45 -07:00
Riley Testut
6ec3e73189 Adds InstalledApp.needsResign
When true, app will be resigned + reinstalled next refresh rather than just refreshing provisioning profiles.
2020-10-01 11:52:26 -07:00
Riley Testut
3f5470dc2f [AltDaemon] Fixes XPC service lookup for Odyssey jailbreak 2020-09-30 15:04:44 -07:00
Riley Testut
110f4eacda Fixes serverNotFound error when refreshing apps due to background fetch
Extends time limit for discovering servers back to 3 seconds, and now accounts for wired and local servers.
2020-09-24 13:01:31 -07:00
Riley Testut
3145c8248e [AltDaemon] Replaces local socket communication with XPC
Allows AltDaemon to be launched on demand + reject any connections not made from AltStore.
2020-09-22 15:12:33 -07:00
Riley Testut
3e5a38977b Merge branch 'module_refactoring' into develop 2020-09-09 10:41:17 -07:00
Riley Testut
6cfe9cfdad Supports refreshing apps with Siri on iOS 14 2020-09-08 12:29:44 -07:00
Theodore Dubois
7f68b808c8 Fix file providers (#346)
* Make file providers work at all

NSExtensionFileProviderDocumentGroup must be a valid app group. This
updates it to use the new name of the app group including the team ID.

* Update AltStore/Operations/ResignAppOperation.swift
2020-09-04 16:29:01 -07:00
Riley Testut
472de7dd21 [AltStoreCore] Refactors core AltStore logic into AltStoreCore framework
AltStoreCore will contain all shared AltStore code between AltStore and any app extensions. Initially, it includes all AltStore model logic.
2020-09-03 16:39:08 -07:00
Riley Testut
7bd93bba2d [AltKit] Replaces dedicated AltKit module with shared files across targets
Treating AltKit as a full module resulted in more complexity than necessary, when we really just wanted to share some files between different targets. Now we can share individual files across modules as-needed without AltKit overhead.
2020-09-03 15:35:29 -07:00
osy
97232fec1e Preserve device specific keys in Info.plist
Apple's Info.plist support platform and device specific keys to augment existing
keys. For example `UISupportedInterfaceOrientations~ipad` replaces
`UISupportedInterfaceOrientations` when running on an iPad.

By using Bundle.infoDictionary, Apple will pre-process the Info.plist and replace
any key with its device specific variant. Since AltStore does not support iPad,
this will strip out any iPad specific keys for the installing app.

We add an extension Bundle.completeInfoDictionary that will return the original
de-serialized dictionary including all the device specific keys.

See: https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW9

# Conflicts:
#	AltKit/Extensions/Bundle+AltStore.swift
#	AltStore/Model/DatabaseManager.swift
2020-08-31 12:47:11 -07:00
Riley Testut
08bcd9b9fd Improves error handling when fetching multiple sources
Fetching sources is no longer all or nothing. Now if a source cannot be fetched, it won’t prevent other sources from being updated.
2020-08-27 16:28:13 -07:00
Riley Testut
af6f57f945 Fixes installing AltStore versions containing app extensions 2020-07-24 13:02:48 -07:00
Riley Testut
4311db2cf7 Supports installing/refreshings apps w/o computer on jailbroken devices
AltStore will use AltDaemon as a local AltServer if it’s installed and running. AltStore remains a regular sandboxed app, but AltDaemon has private entitlements necessary to perform AltServer operations without a computer.
2020-06-04 19:53:10 -07:00
Riley Testut
1ab36874be Fixes “invalid entitlements” when refreshing AltStore
Replaces “resigned” app group ID with “base” app group ID before resigning AltStore.
2020-05-18 16:00:08 -07:00
Riley Testut
47d206ad19 Removes active app extension limits on 13.5 or later 2020-05-17 23:47:26 -07:00
Riley Testut
46469838f8 Deactivates apps by backing up + deleting them on iOS 13.5+
Deactivating apps by removing their profiles no longer works on iOS 13.5. Instead, AltStore will now back up the app by temporarily replacing it with AltBackup, then remove the app from the phone.
2020-05-17 23:47:26 -07:00
Riley Testut
faa93a6aa0 Adds RemoveAppBackupOperation to remove backed up app data 2020-05-17 23:47:26 -07:00
Riley Testut
407a259221 Adds RemoveAppOperation for removing inactive apps 2020-05-17 23:47:26 -07:00
Riley Testut
dafc87d899 Fixes updating App IDs with no app groups 2020-05-17 23:47:26 -07:00
Riley Testut
92781d3380 Adds BackupAppOperation to backup and restore app data 2020-05-17 23:47:26 -07:00
Riley Testut
775f0e67e1 Adds option to not cache downloaded app during installation 2020-05-17 23:47:26 -07:00
Riley Testut
3ac2beecfc Embeds original bundle ID under ALTBundleIdentifier Info.plist key 2020-05-17 23:47:26 -07:00
Riley Testut
973cede232 Supports resigning apps with multiple app groups 2020-05-17 23:47:24 -07:00
Riley Testut
5ac442638c Supports custom entitlements when fetching provisioning profiles 2020-05-15 14:54:43 -07:00
Riley Testut
c0b9e798c9 Fixes RefreshGroup strong reference cycle 2020-05-14 16:31:23 -07:00
Riley Testut
e08646a337 Fixes updating DolphiniOS due to mismatched bundle IDs
Manually sets Dolphin’s CFBundleIdentifier to match the source bundle ID to prevent breaking updates for existing users.
2020-05-08 11:45:23 -07:00
Riley Testut
d1d7398e77 Redownloads missing cached apps when refreshing or updating 2020-05-08 11:43:34 -07:00