Как настроить мой веб-вид, загруженный уже зарегистрированным пользователем -iPhone - PullRequest
7 голосов
/ 24 января 2012

В моем приложении используется веб-представление с URL: @ "http://www.gmail.com/".

  • Это веб-представление было загружено при нажатии кнопки на главной странице / домашней странице

    (IBAction)webClick:(id)sender
     {
    MailViewController *mail = [[MailViewController alloc]initWithNibName:@"MailViewController" bundle:nil];
    [self.navigationController pushViewController:mail animated:YES];
    }
    
  • Затем было загружено веб-представление, я использовал такой же код для просмотра почты:

    -(void)viewDidLoad
    
    {
        [super viewDidLoad];
        NSString *urlAddress = @"http://www.gmail.com/";
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [webView loadRequest:requestObj];
    }
    

Здесь gmail открылся со страницы входа.необходимо ввести имя пользователя и пароль.

То, что я хочу, это

  • , если мы уже вошли в мою учетную запись через приложение Gmail.

    Загруженview напрямую загружает мою почту, а не страницу входа в систему.

  • , если я еще не вошел в систему, тогда выведите предупреждение, когда войдите в систему.

Как это сделать?

Пожалуйста, помогите мне. Заранее спасибо.

1 Ответ

22 голосов
/ 29 января 2012

Прежде всего, я думаю, что URL, который вы должны загрузить, http://mail.google.com/mail

Кроме этого, вы не получаете нормальное поведение Gmail, потому что UIWebView не сохраняет куки между запусками приложения, вы должны попробоватьчто-то вроде этого, чтобы сохранить их:

- (void)saveCookies
{
    NSData         *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
    NSUserDefaults *defaults    = [NSUserDefaults standardUserDefaults];
    [defaults setObject: cookiesData forKey: @"cookies"];
    [defaults synchronize];
}

и загрузить их обратно, используя:

- (void)loadCookies
{
    NSArray             *cookies       = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"cookies"]];
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

    for (NSHTTPCookie *cookie in cookies)
    {
        [cookieStorage setCookie: cookie];
    }
}
...