Commit Graph

60 Commits

Author SHA1 Message Date
Riley Testut
e97e48ba13 Supports app versions with explicit build versions
AltStore will now consider an update available if either:

* The source’s marketing version doesn’t match installed app’s version
* The source declares a build version AND it doesn’t match the install app’s build version

The installed app matches an app version if both maketing versions match, and the build versions match (if provided by the source).
2023-05-18 15:48:17 -05:00
Riley Testut
961bc5aa66 Removes unnecessary @available annotations 2023-03-02 17:02:11 -06:00
Riley Testut
468e912e47 Removes unnecessary #available checks 2023-03-02 16:53:36 -06:00
Riley Testut
15dd044be9 Fixes UIApplication.setMinimumBackgroundFetchInterval() deprecation warning 2023-03-02 15:58:18 -06:00
Riley Testut
bd84f65fb4 Fixes incorrect update notifications for apps with unsupported versions 2023-01-24 15:03:09 -06:00
Riley Testut
7ea1ad5af0 Replaces StoreApp.latestVersion with latestSupportedVersion + latestAvailableVersion
We now store the latest supported version as a relationship on StoreApp, rather than the latest available version. This allows us to reference the latest supported version in predicates and sort descriptors.

However, we kept the underlying Core Data property name the same to avoid extra migration.
2023-01-24 15:00:31 -06:00
Riley Testut
46cd2be37d Supports new “versions” key in source JSON
Allows sources to list multiple versions of an app.

Preserves backwards compatibility by assigning legacy version values when assigning AppVersions.
2022-09-12 17:07:15 -07:00
Riley Testut
b8e136005a Automatically purges LoggedErrors older than one month
Occurs whenever app enters background.
2022-09-09 17:48:42 -05:00
Riley Testut
c1d64a8027 Fixes “stored properties cannot be marked @available” compiler error
Xcode 13 and earlier allowed us to mark lazy stored properties with @available, but it turns out this was never actually supported. Xcode 14 now throws a compiler error, so we work around it by converting lazy @available properties into computed properties, backed by typed-erased lazy ivars.
2022-08-17 15:23:17 -05:00
Riley Testut
50a5d56856 Migrates database + cached apps from app sandbox to app group 2020-09-16 12:09:12 -07:00
Riley Testut
8045a23531 [AltWidget] Allows choosing featured app 2020-09-15 15:19:12 -07:00
Riley Testut
0256079738 Supports refreshing apps with Siri on iOS 14 2020-09-08 12:29:44 -07:00
Riley Testut
3d9417c071 Switches to UIScene-based lifecycle 2020-09-03 16:58:56 -07:00
Riley Testut
f1a39e1a1f [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
e75d184194 [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
Riley Testut
70a475ff5f Adds altstore://source?url=[link] deep link to add sources 2020-08-28 12:15:15 -07:00
Riley Testut
4c3d33efdc Shows source errors in SourcesViewController 2020-08-27 16:39:03 -07:00
Riley Testut
b7564207b3 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
05dc365dff Adds altstore://install?url=[link] deep link to install remote .ipa’s 2020-05-17 23:47:26 -07:00
Riley Testut
c403d7c788 Adds BackupAppOperation to backup and restore app data 2020-05-17 23:47:26 -07:00
Riley Testut
193ca28c98 Adds VS App Center analytics + crash reporting
Currently tracks install, refresh, and update app events.
2020-03-31 14:31:34 -07:00
Riley Testut
cd89741827 Updates RefreshError.noInstalledApps’ localized description 2020-03-30 15:38:00 -07:00
Riley Testut
a90c0c05a0 Adds initial support for 3rd party Sources 2020-03-24 13:27:44 -07:00
Riley Testut
4f00018164 Refreshes apps by installing provisioning profiles when possible
Assuming the certificate used to originally sign an app is still valid, we can refresh an app simply by installing new provisioning profiles. However, if the signing certificate is no longer valid, we fall back to the old method of resigning + reinstalling.
2020-03-06 17:34:18 -08:00
Riley Testut
9e610ddb73 Adds support for sideloading .ipa’s via “Open in…” 2019-09-27 17:39:36 -07:00
Riley Testut
b60d693056 Adds sound to News and Update alerts 2019-09-21 22:30:01 -07:00
Riley Testut
6c91db1dcd Presents reminder to open AltStore after first background refresh 2019-09-21 21:27:20 -07:00
Riley Testut
f51e41efab Hides Settings Debug section behind swipe gesture 2019-09-19 22:20:10 -07:00
Riley Testut
73c44c5e29 Supports deep linking to Patreon settings 2019-09-19 14:43:26 -07:00
Riley Testut
c5b0072443 Changes app icon + primary tint color 2019-09-19 11:38:38 -07:00
Riley Testut
2192a756b2 Changes app tint color to Red (from Green) 2019-09-08 14:21:58 -07:00
Riley Testut
f5ea5a140a Presents Local Notifications when new NewsItem is fetched in background 2019-09-06 14:41:30 -07:00
Riley Testut
859f8a255c Adds support for isBackgroundRefreshEnabled setting 2019-09-05 11:57:16 -07:00
Riley Testut
0c1f469dfa Prioritizes AltServer that originally installed AltStore over others 2019-09-04 10:45:24 -07:00
Riley Testut
eb5b1a616a [AltStore] Adds basic Patreon integration
- Lists beta versions of apps when signed in to Patreon
- Lists names of Patrons with the Credits benefit
2019-08-28 11:13:22 -07:00
Riley Testut
e77b35f0db [AltStore] Fixes duplicate alerts when refreshing in background 2019-07-31 14:34:04 -07:00
Riley Testut
7727a0b725 [AltStore] Renames App to StoreApp 2019-07-31 14:07:00 -07:00
Riley Testut
caf424df91 [AltStore] Tracks background refresh attempts for debugging 2019-07-31 13:35:12 -07:00
Riley Testut
87ced5523e [AltStore] Refactors fetch apps logic to use Source model objects 2019-07-30 17:00:04 -07:00
Riley Testut
75e398822f [AltStore] Adds LaunchViewController to async load database before UI appears 2019-07-30 16:54:44 -07:00
Riley Testut
cd3e638eff [AltStore] Revises database model to support both store apps and sideloaded apps 2019-07-28 15:41:01 -07:00
Riley Testut
cd9562c300 [AltStore] Checks for updates in background 2019-07-24 13:52:58 -07:00
Riley Testut
c7be693726 [AltStore] Improves reliability & notifications when refreshing apps in background 2019-07-24 13:16:53 -07:00
Riley Testut
fc44dfb19c [AltStore] Adds redesigned AppViewController to view/download AltStore apps 2019-07-24 12:34:23 -07:00
Riley Testut
5f67dcba85 [AltStore] Test background app refresh via silent pushes 2019-07-01 17:14:51 -07:00
Riley Testut
6dd7709364 [AltStore] Improves reliability of background app refresh 2019-07-01 17:13:55 -07:00
Riley Testut
60ba067982 [AltStore] Skip running apps when background refreshing 2019-07-01 12:09:46 -07:00
Riley Testut
3537dd11b0 Presents alert when we fail to extend background refresh time 2019-06-25 13:35:09 -07:00
Riley Testut
a3ffa1795a [AltStore] Extends background fetch time until finished refreshing apps
Plays silent audio in background
2019-06-21 11:33:28 -07:00
Riley Testut
39c84e623a Prioritizes app refresh order
Tries to refresh apps that are about to expire first, and then always refreshes AltStore itself last, since refreshing AltStore means that the app will quit.
2019-06-21 11:20:29 -07:00