Downloads, resigns, and installs apps from start to finish

This commit is contained in:
Riley Testut
2019-05-31 18:24:08 -07:00
parent 87ac2799be
commit 8513c8242c
15 changed files with 590 additions and 113 deletions

View File

@@ -24,6 +24,7 @@ NSErrorDomain const ALTDeviceErrorDomain = @"com.rileytestut.ALTDeviceError";
@property (nonatomic, readonly) NSMutableDictionary<NSUUID *, void (^)(void)> *installationCompletionHandlers;
@property (nonatomic, readonly) NSMutableDictionary<NSUUID *, NSProgress *> *installationProgress;
@property (nonatomic, readonly) NSMutableDictionary<NSUUID *, NSValue *> *installationClients;
@end
@@ -47,6 +48,7 @@ NSErrorDomain const ALTDeviceErrorDomain = @"com.rileytestut.ALTDeviceError";
{
_installationCompletionHandlers = [NSMutableDictionary dictionary];
_installationProgress = [NSMutableDictionary dictionary];
_installationClients = [NSMutableDictionary dictionary];
}
return self;
@@ -235,6 +237,9 @@ NSErrorDomain const ALTDeviceErrorDomain = @"com.rileytestut.ALTDeviceError";
return progress;
}
NSValue *value = [NSValue valueWithPointer:(const void *)np];
self.installationClients[UUID] = value;
self.installationProgress[UUID] = progress;
self.installationCompletionHandlers[UUID] = ^{
finish(nil);
@@ -357,18 +362,17 @@ NSErrorDomain const ALTDeviceErrorDomain = @"com.rileytestut.ALTDeviceError";
#pragma mark - Getters -
- (NSArray<ALTDevice *> *)connectedDevices
{
{
NSMutableArray *connectedDevices = [NSMutableArray array];
int count = 0;
char **udids = NULL;
if (idevice_get_device_list(&udids, &count) < 0)
{
fprintf(stderr, "ERROR: Unable to retrieve device list!\n");
return @[];
}
NSMutableArray *connectedDevices = [NSMutableArray array];
for (int i = 0; i < count; i++)
{
char *udid = udids[i];
@@ -435,9 +439,19 @@ void ALTDeviceManagerDidFinishAppInstallation(const char *notification, void *uu
if (completionHandler != nil)
{
completionHandler();
ALTDeviceManager.sharedManager.installationCompletionHandlers[UUID] = nil;
ALTDeviceManager.sharedManager.installationProgress[UUID] = nil;
}
NSValue *value = ALTDeviceManager.sharedManager.installationClients[UUID];
if (value != nil)
{
np_client_t np = (np_client_t)value.pointerValue;
np_set_notify_callback(np, NULL, uuid);
ALTDeviceManager.sharedManager.installationClients[UUID] = nil;
}
}
void ALTDeviceManagerUpdateStatus(plist_t command, plist_t status, void *uuid)