mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-15 01:33:25 +01:00
[AltServer] Improves error handling when installing apps
This commit is contained in:
@@ -13,19 +13,20 @@ extern NSErrorDomain const AltServerInstallationErrorDomain;
|
|||||||
|
|
||||||
typedef NS_ERROR_ENUM(AltServerErrorDomain, ALTServerError)
|
typedef NS_ERROR_ENUM(AltServerErrorDomain, ALTServerError)
|
||||||
{
|
{
|
||||||
ALTServerErrorUnknown,
|
ALTServerErrorUnknown = 0,
|
||||||
ALTServerErrorConnectionFailed,
|
ALTServerErrorConnectionFailed = 1,
|
||||||
ALTServerErrorLostConnection,
|
ALTServerErrorLostConnection = 2,
|
||||||
|
|
||||||
ALTServerErrorDeviceNotFound,
|
ALTServerErrorDeviceNotFound = 3,
|
||||||
ALTServerErrorDeviceWriteFailed,
|
ALTServerErrorDeviceWriteFailed = 4,
|
||||||
|
|
||||||
ALTServerErrorInvalidRequest,
|
ALTServerErrorInvalidRequest = 5,
|
||||||
ALTServerErrorInvalidResponse,
|
ALTServerErrorInvalidResponse = 6,
|
||||||
|
|
||||||
ALTServerErrorInvalidApp,
|
ALTServerErrorInvalidApp = 7,
|
||||||
ALTServerErrorInstallationFailed,
|
ALTServerErrorInstallationFailed = 8,
|
||||||
ALTServerErrorMaximumFreeAppLimitReached,
|
ALTServerErrorMaximumFreeAppLimitReached = 9,
|
||||||
|
ALTServerErrorUnsupportediOSVersion = 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ NSErrorDomain const AltServerInstallationErrorDomain = @"com.rileytestut.AltServ
|
|||||||
|
|
||||||
case ALTServerErrorMaximumFreeAppLimitReached:
|
case ALTServerErrorMaximumFreeAppLimitReached:
|
||||||
return NSLocalizedString(@"You have reached the limit of 3 apps per device.", @"");
|
return NSLocalizedString(@"You have reached the limit of 3 apps per device.", @"");
|
||||||
|
|
||||||
|
case ALTServerErrorUnsupportediOSVersion:
|
||||||
|
return NSLocalizedString(@"Your device must be running iOS 12.2 or later to install AltStore.", @"");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -137,13 +137,23 @@ private extension AppDelegate
|
|||||||
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: nil)
|
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: nil)
|
||||||
UNUserNotificationCenter.current().add(request)
|
UNUserNotificationCenter.current().add(request)
|
||||||
|
|
||||||
case .failure(let error):
|
case .failure(let error as NSError):
|
||||||
|
|
||||||
let alert = NSAlert()
|
let alert = NSAlert()
|
||||||
|
alert.alertStyle = .critical
|
||||||
alert.messageText = NSLocalizedString("Installation Failed", comment: "")
|
alert.messageText = NSLocalizedString("Installation Failed", comment: "")
|
||||||
alert.informativeText = error.localizedDescription
|
|
||||||
|
if let underlyingError = error.userInfo[NSUnderlyingErrorKey] as? Error
|
||||||
|
{
|
||||||
|
alert.informativeText = underlyingError.localizedDescription
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alert.informativeText = error.localizedDescription
|
||||||
|
}
|
||||||
|
|
||||||
NSRunningApplication.current.activate(options: .activateIgnoringOtherApps)
|
NSRunningApplication.current.activate(options: .activateIgnoringOtherApps)
|
||||||
|
|
||||||
alert.runModal()
|
alert.runModal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -622,12 +622,12 @@ void ALTDeviceManagerUpdateStatus(plist_t command, plist_t status, void *uuid)
|
|||||||
uint64_t code = 0;
|
uint64_t code = 0;
|
||||||
instproxy_status_get_error(status, &name, &description, &code);
|
instproxy_status_get_error(status, &name, &description, &code);
|
||||||
|
|
||||||
if ((percent == -1 && progress.completedUnitCount > 0) || code != 0)
|
if ((percent == -1 && progress.completedUnitCount > 0) || code != 0 || name != NULL)
|
||||||
{
|
{
|
||||||
void (^completionHandler)(NSError *) = ALTDeviceManager.sharedManager.installationCompletionHandlers[UUID];
|
void (^completionHandler)(NSError *) = ALTDeviceManager.sharedManager.installationCompletionHandlers[UUID];
|
||||||
if (completionHandler != nil)
|
if (completionHandler != nil)
|
||||||
{
|
{
|
||||||
if (code != 0)
|
if (code != 0 || name != NULL)
|
||||||
{
|
{
|
||||||
NSLog(@"Error installing app. %@ (%@). %@", @(code), @(name), @(description));
|
NSLog(@"Error installing app. %@ (%@). %@", @(code), @(name), @(description));
|
||||||
|
|
||||||
@@ -639,9 +639,16 @@ void ALTDeviceManagerUpdateStatus(plist_t command, plist_t status, void *uuid)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NSError *underlyingError = [NSError errorWithDomain:AltServerInstallationErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey: @(description)}];
|
NSString *errorName = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
|
||||||
|
if ([errorName isEqualToString:@"DeviceOSVersionTooLow"])
|
||||||
error = [NSError errorWithDomain:AltServerErrorDomain code:ALTServerErrorInstallationFailed userInfo:@{NSUnderlyingErrorKey: underlyingError}];
|
{
|
||||||
|
error = [NSError errorWithDomain:AltServerErrorDomain code:ALTServerErrorUnsupportediOSVersion userInfo:nil];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSError *underlyingError = [NSError errorWithDomain:AltServerInstallationErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey: @(description)}];
|
||||||
|
error = [NSError errorWithDomain:AltServerErrorDomain code:ALTServerErrorInstallationFailed userInfo:@{NSUnderlyingErrorKey: underlyingError}];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
completionHandler(error);
|
completionHandler(error);
|
||||||
|
|||||||
Reference in New Issue
Block a user