mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-08 22:33:26 +01:00
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.
72 lines
2.2 KiB
Swift
72 lines
2.2 KiB
Swift
//
|
|
// Bundle+AltStore.swift
|
|
// AltStore
|
|
//
|
|
// Created by Riley Testut on 5/30/19.
|
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public extension Bundle
|
|
{
|
|
struct Info
|
|
{
|
|
public static let deviceID = "ALTDeviceID"
|
|
public static let serverID = "ALTServerID"
|
|
public static let certificateID = "ALTCertificateID"
|
|
public static let appGroups = "ALTAppGroups"
|
|
public static let altBundleID = "ALTBundleIdentifier"
|
|
|
|
public static let urlTypes = "CFBundleURLTypes"
|
|
public static let exportedUTIs = "UTExportedTypeDeclarations"
|
|
|
|
public static let untetherURL = "ALTFugu14UntetherURL"
|
|
public static let untetherRequired = "ALTFugu14UntetherRequired"
|
|
public static let untetherMinimumiOSVersion = "ALTFugu14UntetherMinimumVersion"
|
|
public static let untetherMaximumiOSVersion = "ALTFugu14UntetherMaximumVersion"
|
|
}
|
|
}
|
|
|
|
public extension Bundle
|
|
{
|
|
var infoPlistURL: URL {
|
|
let infoPlistURL = self.bundleURL.appendingPathComponent("Info.plist")
|
|
return infoPlistURL
|
|
}
|
|
|
|
var provisioningProfileURL: URL {
|
|
let provisioningProfileURL = self.bundleURL.appendingPathComponent("embedded.mobileprovision")
|
|
return provisioningProfileURL
|
|
}
|
|
|
|
var certificateURL: URL {
|
|
let certificateURL = self.bundleURL.appendingPathComponent("ALTCertificate.p12")
|
|
return certificateURL
|
|
}
|
|
|
|
var altstorePlistURL: URL {
|
|
let altstorePlistURL = self.bundleURL.appendingPathComponent("AltStore.plist")
|
|
return altstorePlistURL
|
|
}
|
|
}
|
|
|
|
public extension Bundle
|
|
{
|
|
static var baseAltStoreAppGroupID = "group.com.rileytestut.AltStore"
|
|
|
|
var appGroups: [String] {
|
|
return self.infoDictionary?[Bundle.Info.appGroups] as? [String] ?? []
|
|
}
|
|
|
|
var altstoreAppGroup: String? {
|
|
let appGroup = self.appGroups.first { $0.contains(Bundle.baseAltStoreAppGroupID) }
|
|
return appGroup
|
|
}
|
|
|
|
var completeInfoDictionary: [String : Any]? {
|
|
let infoPlistURL = self.infoPlistURL
|
|
return NSDictionary(contentsOf: infoPlistURL) as? [String : Any]
|
|
}
|
|
}
|