mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 23:03:27 +01:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41b57b7f5e | ||
|
|
bab1fcb7bc | ||
|
|
6cdbe8e9ff | ||
|
|
7b4acc56fc | ||
|
|
fb03cb34aa | ||
|
|
8ea9c30d7e | ||
|
|
4bdeb53f9f | ||
|
|
f1199abd4a |
@@ -173,6 +173,7 @@
|
|||||||
BFC57A6E2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC57A6D2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift */; };
|
BFC57A6E2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC57A6D2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift */; };
|
||||||
BFC57A702416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFC57A6F2416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib */; };
|
BFC57A702416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BFC57A6F2416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib */; };
|
||||||
BFC84A4D2421A19100853474 /* SourcesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC84A4C2421A19100853474 /* SourcesViewController.swift */; };
|
BFC84A4D2421A19100853474 /* SourcesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC84A4C2421A19100853474 /* SourcesViewController.swift */; };
|
||||||
|
BFCCB51A245E3401001853EA /* VerifyAppOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCCB519245E3401001853EA /* VerifyAppOperation.swift */; };
|
||||||
BFD2476E2284B9A500981D42 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD2476D2284B9A500981D42 /* AppDelegate.swift */; };
|
BFD2476E2284B9A500981D42 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD2476D2284B9A500981D42 /* AppDelegate.swift */; };
|
||||||
BFD247752284B9A500981D42 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFD247732284B9A500981D42 /* Main.storyboard */; };
|
BFD247752284B9A500981D42 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFD247732284B9A500981D42 /* Main.storyboard */; };
|
||||||
BFD247772284B9A700981D42 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFD247762284B9A700981D42 /* Assets.xcassets */; };
|
BFD247772284B9A700981D42 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFD247762284B9A700981D42 /* Assets.xcassets */; };
|
||||||
@@ -508,6 +509,7 @@
|
|||||||
BFC57A6D2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledAppsCollectionHeaderView.swift; sourceTree = "<group>"; };
|
BFC57A6D2416FC5D00EB891E /* InstalledAppsCollectionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledAppsCollectionHeaderView.swift; sourceTree = "<group>"; };
|
||||||
BFC57A6F2416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstalledAppsCollectionHeaderView.xib; sourceTree = "<group>"; };
|
BFC57A6F2416FC7600EB891E /* InstalledAppsCollectionHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InstalledAppsCollectionHeaderView.xib; sourceTree = "<group>"; };
|
||||||
BFC84A4C2421A19100853474 /* SourcesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourcesViewController.swift; sourceTree = "<group>"; };
|
BFC84A4C2421A19100853474 /* SourcesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourcesViewController.swift; sourceTree = "<group>"; };
|
||||||
|
BFCCB519245E3401001853EA /* VerifyAppOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerifyAppOperation.swift; sourceTree = "<group>"; };
|
||||||
BFD2476A2284B9A500981D42 /* AltStore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AltStore.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
BFD2476A2284B9A500981D42 /* AltStore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AltStore.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
BFD2476D2284B9A500981D42 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
BFD2476D2284B9A500981D42 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
BFD247742284B9A500981D42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
BFD247742284B9A500981D42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
@@ -1242,6 +1244,7 @@
|
|||||||
BFA8172A23C5633D001B5953 /* FetchAnisetteDataOperation.swift */,
|
BFA8172A23C5633D001B5953 /* FetchAnisetteDataOperation.swift */,
|
||||||
BF56D2AB23DF8E170006506D /* FetchAppIDsOperation.swift */,
|
BF56D2AB23DF8E170006506D /* FetchAppIDsOperation.swift */,
|
||||||
BFC57A642416C72400EB891E /* DeactivateAppOperation.swift */,
|
BFC57A642416C72400EB891E /* DeactivateAppOperation.swift */,
|
||||||
|
BFCCB519245E3401001853EA /* VerifyAppOperation.swift */,
|
||||||
);
|
);
|
||||||
path = Operations;
|
path = Operations;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1756,6 +1759,7 @@
|
|||||||
BF0DCA662433BDF500E3A595 /* AnalyticsManager.swift in Sources */,
|
BF0DCA662433BDF500E3A595 /* AnalyticsManager.swift in Sources */,
|
||||||
BFD5D6F4230DDB0A007955AB /* Campaign.swift in Sources */,
|
BFD5D6F4230DDB0A007955AB /* Campaign.swift in Sources */,
|
||||||
BFB6B21B23186D640022A802 /* NewsItem.swift in Sources */,
|
BFB6B21B23186D640022A802 /* NewsItem.swift in Sources */,
|
||||||
|
BFCCB51A245E3401001853EA /* VerifyAppOperation.swift in Sources */,
|
||||||
BFF0B6982322CAB8007A79E1 /* InstructionsViewController.swift in Sources */,
|
BFF0B6982322CAB8007A79E1 /* InstructionsViewController.swift in Sources */,
|
||||||
BFA8172D23C5823E001B5953 /* InstalledExtension.swift in Sources */,
|
BFA8172D23C5823E001B5953 /* InstalledExtension.swift in Sources */,
|
||||||
BFD5D6E8230CC961007955AB /* PatreonAPI.swift in Sources */,
|
BFD5D6E8230CC961007955AB /* PatreonAPI.swift in Sources */,
|
||||||
@@ -2296,7 +2300,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.AltStore;
|
PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.AltStore;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -2324,7 +2328,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.2;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.AltStore;
|
PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.AltStore;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@@ -25,3 +25,18 @@ extension NSError
|
|||||||
return error
|
return error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protocol ALTLocalizedError: LocalizedError, CustomNSError
|
||||||
|
{
|
||||||
|
var errorFailure: String? { get }
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ALTLocalizedError
|
||||||
|
{
|
||||||
|
var errorUserInfo: [String : Any] {
|
||||||
|
let userInfo = [NSLocalizedDescriptionKey: self.errorDescription,
|
||||||
|
NSLocalizedFailureReasonErrorKey: self.failureReason,
|
||||||
|
NSLocalizedFailureErrorKey: self.errorFailure].compactMapValues { $0 }
|
||||||
|
return userInfo
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -396,6 +396,11 @@ private extension AppManager
|
|||||||
self.set(progress, for: operation)
|
self.set(progress, for: operation)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let viewController = presentingViewController
|
||||||
|
{
|
||||||
|
group.context.presentingViewController = viewController
|
||||||
|
}
|
||||||
|
|
||||||
/* Authenticate (if necessary) */
|
/* Authenticate (if necessary) */
|
||||||
var authenticationOperation: AuthenticationOperation?
|
var authenticationOperation: AuthenticationOperation?
|
||||||
if group.context.session == nil
|
if group.context.session == nil
|
||||||
@@ -503,6 +508,16 @@ private extension AppManager
|
|||||||
}
|
}
|
||||||
progress.addChild(downloadOperation.progress, withPendingUnitCount: 25)
|
progress.addChild(downloadOperation.progress, withPendingUnitCount: 25)
|
||||||
|
|
||||||
|
/* Verify App */
|
||||||
|
let verifyOperation = VerifyAppOperation(context: context)
|
||||||
|
verifyOperation.resultHandler = { (result) in
|
||||||
|
switch result
|
||||||
|
{
|
||||||
|
case .failure(let error): context.error = error
|
||||||
|
case .success: break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
verifyOperation.addDependency(downloadOperation)
|
||||||
|
|
||||||
/* Refresh Anisette Data */
|
/* Refresh Anisette Data */
|
||||||
let refreshAnisetteDataOperation = FetchAnisetteDataOperation(context: group.context)
|
let refreshAnisetteDataOperation = FetchAnisetteDataOperation(context: group.context)
|
||||||
@@ -513,7 +528,7 @@ private extension AppManager
|
|||||||
case .success(let anisetteData): group.context.session?.anisetteData = anisetteData
|
case .success(let anisetteData): group.context.session?.anisetteData = anisetteData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
refreshAnisetteDataOperation.addDependency(downloadOperation)
|
refreshAnisetteDataOperation.addDependency(verifyOperation)
|
||||||
|
|
||||||
|
|
||||||
/* Fetch Provisioning Profiles */
|
/* Fetch Provisioning Profiles */
|
||||||
@@ -579,7 +594,7 @@ private extension AppManager
|
|||||||
progress.addChild(installOperation.progress, withPendingUnitCount: 30)
|
progress.addChild(installOperation.progress, withPendingUnitCount: 30)
|
||||||
installOperation.addDependency(sendAppOperation)
|
installOperation.addDependency(sendAppOperation)
|
||||||
|
|
||||||
let operations = [downloadOperation, refreshAnisetteDataOperation, fetchProvisioningProfilesOperation, resignAppOperation, sendAppOperation, installOperation]
|
let operations = [downloadOperation, verifyOperation, refreshAnisetteDataOperation, fetchProvisioningProfilesOperation, resignAppOperation, sendAppOperation, installOperation]
|
||||||
group.add(operations)
|
group.add(operations)
|
||||||
self.run(operations, context: group.context)
|
self.run(operations, context: group.context)
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ class OperationContext
|
|||||||
var server: Server?
|
var server: Server?
|
||||||
var error: Error?
|
var error: Error?
|
||||||
|
|
||||||
|
var presentingViewController: UIViewController?
|
||||||
|
|
||||||
let operations: NSHashTable<Foundation.Operation>
|
let operations: NSHashTable<Foundation.Operation>
|
||||||
|
|
||||||
init(server: Server? = nil, error: Error? = nil, operations: [Foundation.Operation] = [])
|
init(server: Server? = nil, error: Error? = nil, operations: [Foundation.Operation] = [])
|
||||||
|
|||||||
131
AltStore/Operations/VerifyAppOperation.swift
Normal file
131
AltStore/Operations/VerifyAppOperation.swift
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
//
|
||||||
|
// VerifyAppOperation.swift
|
||||||
|
// AltStore
|
||||||
|
//
|
||||||
|
// Created by Riley Testut on 5/2/20.
|
||||||
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
import AltSign
|
||||||
|
import AltKit
|
||||||
|
|
||||||
|
import Roxas
|
||||||
|
|
||||||
|
enum VerificationError: ALTLocalizedError
|
||||||
|
{
|
||||||
|
case privateEntitlements(ALTApplication, [String: Any])
|
||||||
|
|
||||||
|
var app: ALTApplication {
|
||||||
|
switch self {
|
||||||
|
case .privateEntitlements(let app, _): return app
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorFailure: String? {
|
||||||
|
return String(format: NSLocalizedString("“%@” could not be installed.", comment: ""), app.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
var failureReason: String? {
|
||||||
|
switch self
|
||||||
|
{
|
||||||
|
case .privateEntitlements(let app, _):
|
||||||
|
return String(format: NSLocalizedString("“%@” requires private permissions.", comment: ""), app.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc(VerifyAppOperation)
|
||||||
|
class VerifyAppOperation: ResultOperation<Void>
|
||||||
|
{
|
||||||
|
let context: AppOperationContext
|
||||||
|
var verificationHandler: ((VerificationError) -> Bool)?
|
||||||
|
|
||||||
|
init(context: AppOperationContext)
|
||||||
|
{
|
||||||
|
self.context = context
|
||||||
|
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
override func main()
|
||||||
|
{
|
||||||
|
super.main()
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if let error = self.context.error
|
||||||
|
{
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
guard let app = self.context.app else { throw OperationError.invalidParameters }
|
||||||
|
|
||||||
|
if let commentStart = app.entitlementsString.range(of: "<!---><!-->"), let commentEnd = app.entitlementsString.range(of: "<!-- -->")
|
||||||
|
{
|
||||||
|
// Psychic Paper private entitlements.
|
||||||
|
|
||||||
|
let entitlementsStart = app.entitlementsString.index(after: commentStart.upperBound)
|
||||||
|
let rawEntitlements = String(app.entitlementsString[entitlementsStart ..< commentEnd.lowerBound])
|
||||||
|
|
||||||
|
let plistTemplate = """
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
%@
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
"""
|
||||||
|
let entitlementsPlist = String(format: plistTemplate, rawEntitlements)
|
||||||
|
let entitlements = try PropertyListSerialization.propertyList(from: entitlementsPlist.data(using: .utf8)!, options: [], format: nil) as! [String: Any]
|
||||||
|
|
||||||
|
let error = VerificationError.privateEntitlements(app, entitlements)
|
||||||
|
self.process(error) { (result) in
|
||||||
|
self.finish(result.mapError { $0 as Error })
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
self.finish(.success(()))
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
self.finish(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension VerifyAppOperation
|
||||||
|
{
|
||||||
|
func process(_ error: VerificationError, completion: @escaping (Result<Void, VerificationError>) -> Void)
|
||||||
|
{
|
||||||
|
guard let presentingViewController = self.context.presentingViewController else { return completion(.failure(error)) }
|
||||||
|
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
switch error
|
||||||
|
{
|
||||||
|
case .privateEntitlements(_, let entitlements):
|
||||||
|
let permissions = entitlements.keys.sorted().joined(separator: "\n")
|
||||||
|
let message = String(format: NSLocalizedString("""
|
||||||
|
You must allow access to these private permissions before continuing:
|
||||||
|
|
||||||
|
%@
|
||||||
|
|
||||||
|
Private permissions allow apps to do more than normally allowed by iOS, including potentially accessing sensitive private data. Make sure to only install apps from sources you trust.
|
||||||
|
""", comment: ""), permissions)
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: error.failureReason ?? error.localizedDescription, message: message, preferredStyle: .alert)
|
||||||
|
alertController.addAction(UIAlertAction(title: NSLocalizedString("Allow Access", comment: ""), style: .destructive) { (action) in
|
||||||
|
completion(.success(()))
|
||||||
|
})
|
||||||
|
alertController.addAction(UIAlertAction(title: NSLocalizedString("Deny Access", comment: ""), style: .default, handler: { (action) in
|
||||||
|
completion(.failure(error))
|
||||||
|
}))
|
||||||
|
presentingViewController.present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,10 +7,10 @@
|
|||||||
"bundleIdentifier": "com.rileytestut.AltStore.Alpha",
|
"bundleIdentifier": "com.rileytestut.AltStore.Alpha",
|
||||||
"developerName": "Riley Testut",
|
"developerName": "Riley Testut",
|
||||||
"subtitle": "An alternative App Store for iOS.",
|
"subtitle": "An alternative App Store for iOS.",
|
||||||
"version": "1.3a2",
|
"version": "1.3.1a1",
|
||||||
"versionDate": "2020-03-31T15:00:00-07:00",
|
"versionDate": "2020-05-01T10:00:00-07:00",
|
||||||
"versionDescription": "• Adds analytics for downloads, updates, and crashes.\n• Deactivates beta apps once you are no longer a patron\n• Removes \"Sideloading in Beta\" alert\n• Fixes sideloading apps from News tab\n• Fixes missing recovery suggestions for some errors\n• Fixes secondary AltStore appearing after refresh under certain circumstances\n",
|
"versionDescription": "This update adds support for installing apps using private entitlements via Psychic Paper.\n\nFor more info, check out https://siguza.github.io/psychicpaper/",
|
||||||
"downloadURL": "https://f000.backblazeb2.com/file/altstore/sources/alpha/altstore/1_3_a2.ipa",
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/sources/alpha/altstore/1_3_1_a1.ipa",
|
||||||
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis beta release of AltStore allows you to install Delta as well as any app (.ipa) directly from the Files app.",
|
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis beta release of AltStore allows you to install Delta as well as any app (.ipa) directly from the Files app.",
|
||||||
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
||||||
"tintColor": "018084",
|
"tintColor": "018084",
|
||||||
@@ -36,14 +36,14 @@
|
|||||||
"bundleIdentifier": "com.rileytestut.Delta.Alpha",
|
"bundleIdentifier": "com.rileytestut.Delta.Alpha",
|
||||||
"developerName": "Riley Testut",
|
"developerName": "Riley Testut",
|
||||||
"subtitle": "Classic games in your pocket.",
|
"subtitle": "Classic games in your pocket.",
|
||||||
"version": "1.2a1",
|
"version": "1.2a6",
|
||||||
"versionDate": "2020-03-27T17:30:00-07:00",
|
"versionDate": "2020-04-29T21:30:00-07:00",
|
||||||
"versionDescription": "• Switches to melonDS from DeSmuME for Nintendo DS emulation.\n• Adds support for fast forwarding DS games\n• Adds ability to select different fast forward speeds by long pressing Fast Forward option in pause menu.",
|
"versionDescription": "• Fixes various bugs with new controller skin features",
|
||||||
"downloadURL": "https://f000.backblazeb2.com/file/altstore/alpha/delta/1_2_a1.ipa",
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/sources/alpha/delta/1_2_a6.ipa",
|
||||||
"localizedDescription": "The next console for Delta is coming: this beta version of Delta brings support for playing DS games!\n\nDS support currently includes:\n• Playing DS games\n• Save States\n• Hold Button\n\nFeatures I'm still working on:\n• Fast Forward\n• Cheats\n• Controller skin (using placeholder controller skin for now)\n\nPlease report any issues you find to support@altstore.io. Thanks!",
|
"localizedDescription": "The next console for Delta is coming: this beta version of Delta brings support for playing DS games!\n\nDS support currently includes:\n• Playing DS games\n• Save States\n• Hold Button\n\nFeatures I'm still working on:\n• Fast Forward\n• Cheats\n• Controller skin (using placeholder controller skin for now)\n\nPlease report any issues you find to support@altstore.io. Thanks!",
|
||||||
"iconURL": "https://user-images.githubusercontent.com/705880/63391976-4d311700-c37a-11e9-91a8-4fb0c454413d.png",
|
"iconURL": "https://user-images.githubusercontent.com/705880/63391976-4d311700-c37a-11e9-91a8-4fb0c454413d.png",
|
||||||
"tintColor": "8A28F7",
|
"tintColor": "8A28F7",
|
||||||
"size": 17631726,
|
"size": 18587500,
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
"type": "photos",
|
"type": "photos",
|
||||||
@@ -56,6 +56,34 @@
|
|||||||
"https://user-images.githubusercontent.com/705880/65813009-f2ae8600-e183-11e9-9eb7-704effc11173.png",
|
"https://user-images.githubusercontent.com/705880/65813009-f2ae8600-e183-11e9-9eb7-704effc11173.png",
|
||||||
"https://user-images.githubusercontent.com/705880/65601117-58b5c600-df56-11e9-9c19-9a5ba5da54cf.PNG"
|
"https://user-images.githubusercontent.com/705880/65601117-58b5c600-df56-11e9-9c19-9a5ba5da54cf.PNG"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AltStore (Stable)",
|
||||||
|
"bundleIdentifier": "com.rileytestut.AltStore",
|
||||||
|
"developerName": "Riley Testut",
|
||||||
|
"version": "1.3",
|
||||||
|
"versionDate": "2020-04-09T17:00:00-07:00",
|
||||||
|
"versionDescription": "Still haven't written update notes yet...",
|
||||||
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/alpha/altstore/1_3.ipa",
|
||||||
|
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis version of AltStore allows you to install Delta, an all-in-one emulator for iOS, as well as sideload other .ipa files from the Files app.",
|
||||||
|
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
||||||
|
"tintColor": "018084",
|
||||||
|
"size": 2532661,
|
||||||
|
"screenshotURLs": [
|
||||||
|
"https://user-images.githubusercontent.com/705880/78942028-acf54300-7a6d-11ea-821c-5bb7a9b3e73a.PNG",
|
||||||
|
"https://user-images.githubusercontent.com/705880/78942222-0fe6da00-7a6e-11ea-9f2a-dda16157583c.PNG",
|
||||||
|
"https://user-images.githubusercontent.com/705880/65605577-332cba80-df5e-11e9-9f00-b369ce974f71.PNG"
|
||||||
|
],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"type": "background-fetch",
|
||||||
|
"usageDescription": "AltStore periodically refreshes apps in the background to prevent them from expiring."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "background-audio",
|
||||||
|
"usageDescription": "Allows AltStore to run longer than 30 seconds when refreshing apps in background."
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"news": [
|
"news": [
|
||||||
|
|||||||
@@ -7,17 +7,17 @@
|
|||||||
"name": "AltStore",
|
"name": "AltStore",
|
||||||
"bundleIdentifier": "com.rileytestut.AltStore",
|
"bundleIdentifier": "com.rileytestut.AltStore",
|
||||||
"developerName": "Riley Testut",
|
"developerName": "Riley Testut",
|
||||||
"version": "1.2",
|
"version": "1.3.2",
|
||||||
"versionDate": "2020-02-12T08:00:00-08:00",
|
"versionDate": "2020-05-03T14:00:00-07:00",
|
||||||
"versionDescription": "FEATURES\n• Install and refresh apps over USB, not just WiFi (requires updating to latest AltServer version)\n• Supports sideloading unc0ver (support for sideloading any app coming soon)\n\nBUG FIXES\n• Fixes \"Device Already Registered\" error\n• Fixes \"Session Expired\" error when installing apps on slow connection",
|
"versionDescription": "NEW\n• Displays \"Grant Permission\" alert that lists all private permissions when installing an app that uses them.\n\nNOTE: No permission alert will appear for apps without private entitlements.\n\nPREVIOUS UPDATES:\n• Adds support for installing apps using private entitlements via Psychic Paper (https://siguza.github.io/psychicpaper/)\n• Sideload any app (.ipa file) directly from Files.\n• Manage which apps are (in-)active at any time from the My Apps tab (optionally via drag and drop)*\n• Dramatically faster app refresh times*\n• Improved error messages when refreshing apps*\n• Improved stability when refreshing apps over WiFi*\n• Removes cached apps after they have been uninstalled.\n• Fixes peek & pop on iOS 12.\n• Fixes missing recovery suggestions for some errors.\n• Fixes secondary AltStore appearing after refresh under certain circumstances.\n\n* Requires latest AltServer version. Update AltServer by choosing \"Check For Updates...\" from the AltServer menu.",
|
||||||
"downloadURL": "https://f000.backblazeb2.com/file/altstore/altstore.ipa",
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/altstore.ipa",
|
||||||
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis initial release of AltStore allows you to install Delta, an all-in-one emulator for iOS, with support for installing 3rd party apps coming soon.",
|
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis version of AltStore allows you to install Delta, an all-in-one emulator for iOS, as well as sideload other .ipa files from the Files app.",
|
||||||
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
||||||
"tintColor": "018084",
|
"tintColor": "018084",
|
||||||
"size": 2114068,
|
"size": 2530985,
|
||||||
"screenshotURLs": [
|
"screenshotURLs": [
|
||||||
"https://user-images.githubusercontent.com/705880/65605563-2f009d00-df5e-11e9-9b40-1f36135d5c80.PNG",
|
"https://user-images.githubusercontent.com/705880/78942028-acf54300-7a6d-11ea-821c-5bb7a9b3e73a.PNG",
|
||||||
"https://user-images.githubusercontent.com/705880/65605569-30ca6080-df5e-11e9-8dfb-15ebb00e10cb.PNG",
|
"https://user-images.githubusercontent.com/705880/78942222-0fe6da00-7a6e-11ea-9f2a-dda16157583c.PNG",
|
||||||
"https://user-images.githubusercontent.com/705880/65605577-332cba80-df5e-11e9-9f00-b369ce974f71.PNG"
|
"https://user-images.githubusercontent.com/705880/65605577-332cba80-df5e-11e9-9f00-b369ce974f71.PNG"
|
||||||
],
|
],
|
||||||
"permissions": [
|
"permissions": [
|
||||||
@@ -36,18 +36,18 @@
|
|||||||
"bundleIdentifier": "com.rileytestut.AltStore.Beta",
|
"bundleIdentifier": "com.rileytestut.AltStore.Beta",
|
||||||
"developerName": "Riley Testut",
|
"developerName": "Riley Testut",
|
||||||
"subtitle": "An alternative App Store for iOS.",
|
"subtitle": "An alternative App Store for iOS.",
|
||||||
"version": "1.3b3",
|
"version": "1.3.2b1",
|
||||||
"versionDate": "2020-04-01T15:30:00-07:00",
|
"versionDate": "2020-05-03T14:00:00-07:00",
|
||||||
"versionDescription": "** Requires latest AltServer beta to fully work. Download from https://altstore.io/altserver/beta **\n\nAltStore 1.3 is nearing completion, so this beta focuses on fixing the last remaining known issues with sideloading. Assuming nothing major is reported, this should be the final beta before the public release!\n\nNEW FEATURES\n• Adds search bar in Browse tab\n• Adds Visual Studio App Center analytics for automatic crash reporting\n\nIMPROVEMENTS\n• Deactivates beta apps once you are no longer a patron\n• Removes \"Sideloading in Beta\" alert\n\nBUG FIXES\n• Fixes sideloading apps from News tab\n• Fixes missing recovery suggestions for some errors\n• Fixes secondary AltStore appearing after refresh under certain circumstances\n\nNOTE: Support for 3rd party sources will be disabled in public versions of AltStore until it is finished.",
|
"versionDescription": "NEW\n• Displays \"Grant Permission\" alert that lists all private entitlements when installing an app that uses them.\n\nNOTE: No permission alert will appear for apps without private entitlements.\n\nPREVIOUS UPDATE\n• Adds support for installing apps using private entitlements via Psychic Paper (https://siguza.github.io/psychicpaper/)",
|
||||||
"downloadURL": "https://f000.backblazeb2.com/file/altstore/altstore-beta.ipa",
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/altstore-beta.ipa",
|
||||||
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis beta release of AltStore allows you to install Delta as well as any app (.ipa) directly from the Files app.",
|
"localizedDescription": "AltStore is an alternative app store for non-jailbroken devices. \n\nThis beta release of AltStore adds support for 3rd party sources, allowing you to download apps from other developers directly through AltStore.",
|
||||||
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
"iconURL": "https://user-images.githubusercontent.com/705880/65270980-1eb96f80-dad1-11e9-9367-78ccd25ceb02.png",
|
||||||
"tintColor": "018084",
|
"tintColor": "018084",
|
||||||
"size": 2532618,
|
"size": 2531143,
|
||||||
"beta": true,
|
"beta": true,
|
||||||
"screenshotURLs": [
|
"screenshotURLs": [
|
||||||
"https://user-images.githubusercontent.com/705880/65605563-2f009d00-df5e-11e9-9b40-1f36135d5c80.PNG",
|
"https://user-images.githubusercontent.com/705880/78942028-acf54300-7a6d-11ea-821c-5bb7a9b3e73a.PNG",
|
||||||
"https://user-images.githubusercontent.com/705880/65605569-30ca6080-df5e-11e9-8dfb-15ebb00e10cb.PNG",
|
"https://user-images.githubusercontent.com/705880/78942222-0fe6da00-7a6e-11ea-9f2a-dda16157583c.PNG",
|
||||||
"https://user-images.githubusercontent.com/705880/65605577-332cba80-df5e-11e9-9f00-b369ce974f71.PNG"
|
"https://user-images.githubusercontent.com/705880/65605577-332cba80-df5e-11e9-9f00-b369ce974f71.PNG"
|
||||||
],
|
],
|
||||||
"permissions": [
|
"permissions": [
|
||||||
@@ -92,14 +92,14 @@
|
|||||||
"bundleIdentifier": "com.rileytestut.Delta.Beta",
|
"bundleIdentifier": "com.rileytestut.Delta.Beta",
|
||||||
"developerName": "Riley Testut",
|
"developerName": "Riley Testut",
|
||||||
"subtitle": "Classic games in your pocket.",
|
"subtitle": "Classic games in your pocket.",
|
||||||
"version": "1.2b",
|
"version": "1.2b2",
|
||||||
"versionDate": "2020-02-11T16:30:00-08:00",
|
"versionDate": "2020-04-27T14:30:00-07:00",
|
||||||
"versionDescription": "GENERAL\n• Replaces 3D Touch peek/pop with iOS 13 context menus\n\nCONTROLLER SKINS\n• Brand new Nintendo DS controller skin\n• New Quick Save, Quick Load, and Fast Forward inputs for controller skins\n• Apply video filters with controller skins\n• Assign controller skins to individual games",
|
"versionDescription": "Delta, meet melonDS! melonDS is a modern Nintendo DS emulator that is more accurate and reliable than DeSmuME. melonDS is actively being worked on and supports many features DeSmuME does not, which is why Delta now includes a melonDS emulator core 🎉 melonDS will soon become the default, so please report any issues you find! \n\nNEW FEATURES\n• New core based on melonDS for DS emulation (will soon become the default)\n• DS settings screen to switch cores and import melonDS BIOS files\n• Fast forward DS games\n• Action Replay cheat codes for DS games (melonDS core)\n• Boot directly to Nintendo DS home screen and change system settings (melonDS core)\n• Access Delta files directory in Files > On My iPhone > Delta\n• Support for 8-character NES Game Genie cheat codes\n• Export save files for games from context menu\n\nBUG FIXES\n• Fixes graphical issues when playing DS games\n• Fixes incorrect formatting when entering cheat codes\n• Fixes incorrect game name text color after deleting a game or switching cores\n• Fixes save files being overwritten when previewing games\n\nSwitching to melonDS has been a _big_ transition, so please report any and all bugs you find using the melonDS core. Enjoy!",
|
||||||
"downloadURL": "https://f000.backblazeb2.com/file/altstore/delta-beta.ipa",
|
"downloadURL": "https://f000.backblazeb2.com/file/altstore/delta-beta.ipa",
|
||||||
"localizedDescription": "The next console for Delta is coming: this beta version of Delta brings support for playing DS games!\n\nDS support currently includes:\n• Playing DS games\n• Save States\n• Hold Button\n\nFeatures I'm still working on:\n• Fast Forward\n• Cheats\n• Controller skin (using placeholder controller skin for now)\n\nPlease report any issues you find to support@altstore.io. Thanks!",
|
"localizedDescription": "The next console for Delta is coming: this beta version of Delta brings support for playing DS games!\n\nDS support currently includes:\n• Playing DS games\n• Save States\n• Hold Button\n\nFeatures I'm still working on:\n• Fast Forward\n• Cheats\n• Controller skin (using placeholder controller skin for now)\n\nPlease report any issues you find to support@altstore.io. Thanks!",
|
||||||
"iconURL": "https://user-images.githubusercontent.com/705880/63391976-4d311700-c37a-11e9-91a8-4fb0c454413d.png",
|
"iconURL": "https://user-images.githubusercontent.com/705880/63391976-4d311700-c37a-11e9-91a8-4fb0c454413d.png",
|
||||||
"tintColor": "8A28F7",
|
"tintColor": "8A28F7",
|
||||||
"size": 17631726,
|
"size": 18607156,
|
||||||
"beta": true,
|
"beta": true,
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
@@ -228,6 +228,23 @@
|
|||||||
"imageURL": "https://user-images.githubusercontent.com/705880/65606598-04afdf00-df60-11e9-8f93-af6345d39557.png",
|
"imageURL": "https://user-images.githubusercontent.com/705880/65606598-04afdf00-df60-11e9-8f93-af6345d39557.png",
|
||||||
"date": "2019-12-16",
|
"date": "2019-12-16",
|
||||||
"notify": false
|
"notify": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Sideloading is Here!",
|
||||||
|
"identifier": "sideloading-is-here",
|
||||||
|
"caption": "Update to AltStore 1.3 to install any app directly from Files.",
|
||||||
|
"tintColor": "018084",
|
||||||
|
"imageURL": "https://user-images.githubusercontent.com/705880/79022069-02932380-7b32-11ea-8bad-49907cb97ece.png",
|
||||||
|
"date": "2020-04-10T13:00:00-07:00",
|
||||||
|
"notify": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "iOS 13.4 Fixes App Crashes",
|
||||||
|
"identifier": "ios-13-4-now-available",
|
||||||
|
"caption": "Update to iOS 13.4 to fix some sideloaded apps crashing on launch.",
|
||||||
|
"tintColor": "34C759",
|
||||||
|
"date": "2020-04-10T13:30:00-07:00",
|
||||||
|
"notify": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"userInfo": {
|
"userInfo": {
|
||||||
|
|||||||
2
Dependencies/AltSign
vendored
2
Dependencies/AltSign
vendored
Submodule Dependencies/AltSign updated: 9dc729f3d7...5905038272
Reference in New Issue
Block a user