Сделать UIWebView как новый при каждом запуске приложения - PullRequest
1 голос
/ 27 февраля 2012

Простой вопрос, который был бы фантастическим, если бы кто-то мог ответить.

У меня есть простой UIWebView, используемый для входа в определенную службу. Тем не менее, когда я перезагружаю приложение, оно остается в системе. Мне нужно уметь создавать UIWebView как новый каждый раз, когда приложение запускается. Я не уверен, есть ли где-нибудь опция в конструкторе интерфейсов, или, возможно, какой-то метод, который я могу поместить в метод, который вызывается при завершении приложения, чтобы он выпускал WebView или что-то в этом роде.

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

Что вам нужно сделать, это не сохранить кэш UIwebView.Вы можете сделать это с помощью простого кода, например:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];

Поместите код в код UIwebview.

Или в ApplicationDidFinishLoad (или что-то в этом роде, ха-ха), вы можете удалить кеш с помощью:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

Редактировать:

Вы что-то спросили в комментариях.Вы можете сделать что-то вроде кода ниже:

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];

        UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.f, 0.f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20.f)];
        [webView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];

//No Cache\\

      NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
        [NSURLCache setSharedURLCache:sharedCache];

//No Cache\\

        webView.delegate = self;
        [webView loadRequest:request];
        [self.view addSubview:webView];

Хорошо,

Удалить конкретный запрос

[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];

Или удалить все куки из UIWebView

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

    if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {

        [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
    }
}

Удачи, Натан

1 голос
/ 27 февраля 2012

Мой ответ будет состоять из нескольких частей, чтобы охватить несколько баз.

1 - возможно, в приложении есть набор файлов cookie для пользователя, поэтому даже при запуске нового приложения старый файл cookie остается с данными для входа иследовательно, вы все равно будете входить в систему.

Чтобы уничтожить куки, попробуйте это до загрузки uiwebview (т.е. в viewwillload или другим способом)

NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
   [storage deleteCookie:cookie];
}

2 - это на многопоточномтелефон (iOS4 или новее на 3GS или новее)?Вы уверены, что приложение завершает свою работу, а не просто переходит в фоновый режим?Если это так, и вы только запускаете предыдущее приложение (в котором вы все еще входили), вам нужно подключиться к приложению - (void) applicationDidBecomeActive: (UIApplication *), удалить старое веб-представление и добавить новое..

...