Leaves apps activated if there is no active app limit during migration

This commit is contained in:
Riley Testut
2020-04-01 13:05:31 -07:00
parent 664c31aba8
commit b8e1921b74
4 changed files with 29 additions and 6 deletions

View File

@@ -11,6 +11,9 @@ import CoreData
import AltSign
// Free developer accounts are limited to only 3 active sideloaded apps at a time as of iOS 13.3.1.
let ALTActiveAppsLimit = 3
protocol InstalledAppProtocol: Fetchable
{
var name: String { get }

View File

@@ -258,7 +258,7 @@
</object>
<object type="XDDEVATTRIBUTEMAPPING" id="z148">
<attribute name="valueexpressiondata" type="binary">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
</attribute>
<attribute name="name" type="string">isActive</attribute>
<relationship name="entitymapping" type="1/1" destination="XDDEVENTITYMAPPING" idrefs="z179"></relationship>

View File

@@ -7,6 +7,7 @@
//
import CoreData
import AltSign
@objc(InstalledAppToInstalledAppMigrationPolicy)
class InstalledAppToInstalledAppMigrationPolicy: NSEntityMigrationPolicy
@@ -28,10 +29,30 @@ class InstalledAppToInstalledAppMigrationPolicy: NSEntityMigrationPolicy
dInstance.setValue(teams.first, forKey: #keyPath(InstalledApp.team))
}
@objc(defaultIsActiveForBundleID:)
func defaultIsActive(for bundleID: String) -> NSNumber
@objc(defaultIsActiveForBundleID:team:)
func defaultIsActive(for bundleID: String, team: NSManagedObject?) -> NSNumber
{
let isActive = (bundleID == StoreApp.altstoreAppID)
let isActive: Bool
let activeAppsMinimumVersion = OperatingSystemVersion(majorVersion: 13, minorVersion: 3, patchVersion: 1)
if !ProcessInfo.processInfo.isOperatingSystemAtLeast(activeAppsMinimumVersion)
{
isActive = true
}
else if let team = team, let type = team.value(forKey: #keyPath(Team.type)) as? Int16, type != ALTTeamType.free.rawValue
{
isActive = true
}
else
{
// AltStore should always be active, but deactivate all other apps.
isActive = (bundleID == StoreApp.altstoreAppID)
// We can assume there is an active app limit,
// but will confirm next time user authenticates.
UserDefaults.standard.activeAppsLimit = ALTActiveAppsLimit
}
return NSNumber(value: isActive)
}
}

View File

@@ -231,8 +231,7 @@ class AuthenticationOperation: ResultOperation<(ALTTeam, ALTCertificate, ALTAppl
let activeAppsMinimumVersion = OperatingSystemVersion(majorVersion: 13, minorVersion: 3, patchVersion: 1)
if team.type == .free, ProcessInfo.processInfo.isOperatingSystemAtLeast(activeAppsMinimumVersion)
{
// Free developer accounts are limited to only 3 active sideloaded apps at a time as of iOS 13.3.1.
UserDefaults.standard.activeAppsLimit = 3
UserDefaults.standard.activeAppsLimit = ALTActiveAppsLimit
}
else
{