1
resposta

UIWebView com arquivo local, nao abre a primeira vez

Olá, sou novo no Objective-C, e peguei um projeto para dar manutenção na minha empresa, nao me condenem a ideia nao foi minha kkk

Mas o seguinte, temos um app que abre uma UIWebView para um arquivo local que vai empacotado junto do app. Isso sempre funcionou da forma que estava, porem agora na primeira vez que abro o aplicativo apos instalado ocorre uma falha não encontra o index.html, porem se encerro o app e abro novamente sem reinstala-lo funciona normalmente.

Verificando o codigo, ao abrir o app, o controller (codigo abaixo) realiza uma copia dos arquivos webs de um diretorio para outro (um diretorio do usuario aparentemente), e mesmo fazendo a copia com sucesso (debuguei) o app nunca funciona na primeira abertura.

Alguem pode me explicar se o processo esta correto, ou se tem uma outra forma que posso fazer? Estou bem perdido e nao consegui encontrar uma soluçao pra isso.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    NSString *urlStr = url.absoluteString;
    NSLog(@"shouldStartLoadWithRequest %@",urlStr);
    return [self processaURL:urlStr];
}
.
.
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self preparaHtmlLocalCompletion:^(NSString *path) {

        dispatch_async(dispatch_get_main_queue(), ^{

            if ([Sessao usuarioLogado]) {
                [self obtemKPIsCompletion:^{

                    // Carrega o webview
                    NSString *principalHtmlPath = [path stringByAppendingPathComponent:@"index.html"];
                    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:principalHtmlPath]];
                    [self.webView loadRequest:request];

                }];
            }
            else {
                [Sessao logoff];
                [self fecharAnimado:NO];
            }
        });
    }];
}

.
.
.
for (NSURL *fileURL in enumerator) {
        NSString *filename;
        [fileURL getResourceValue:&filename forKey:NSURLNameKey error:nil];

        NSNumber *isDirectory;
        [fileURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];

        NSString *destinationPath = [[destinoURL path] stringByAppendingPathComponent:[fileURL lastPathComponent]];

        if ([isDirectory boolValue]) {
            // Cria o diretório e copia o conteúdo
            if (![fileManager fileExistsAtPath:destinationPath isDirectory:nil]){
                NSURL *destinationURL = [NSURL fileURLWithPath:destinationPath];
                [fileManager createDirectoryAtURL:destinationURL withIntermediateDirectories:YES attributes:nil error:nil];
                [self copia:fileURL paraDestino:destinationURL];
            }
        }
        else {
            // Copia o arquivo
            if (![fileManager fileExistsAtPath:destinationPath isDirectory:nil]){
                [fileManager copyItemAtURL:fileURL toURL:[NSURL fileURLWithPath:destinationPath] error:nil];
            }
        }
    }

Obrigado.

1 resposta

Oi João, tudo bem? Vi que seu tópico já está aberto a algum tempo e você não obteve respostas. Você ainda está com problemas? Vou procurar te ajudar da forma que puder, me dá um retorno aqui, tá bem?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software