如何使用已登录用户-iPhone设置我的Web视图

iOS*_*dev 7 iphone xcode objective-c uiwebview ios-simulator

在我的应用程序中使用带URL的Web视图:@"http://www.gmail.com/".

  • 单击主页面/主页中的按钮时加载了此Web视图

    (IBAction)webClick:(id)sender
     {
    MailViewController *mail = [[MailViewController alloc]initWithNibName:@"MailViewController" bundle:nil];
    [self.navigationController pushViewController:mail animated:YES];
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后加载了Web视图,我在邮件视图中使用了像thin这样的代码:

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

这里用登录页面打开了gmail.我们需要输入用户名和密码.

我想要的是,

  • 如果我们已经通过Gmail应用程序登录我的帐户..

    加载的视图直接挂载我的邮件,而不是登录页面.

  • 如果我还没有进入,请在登录时显示提醒.

怎么做?

请帮我.提前致谢.

Jor*_*hen 22

首先,我认为你应该加载的URL是 http://mail.google.com/mail

除此之外,你没有获得正常的gmail行为,因为UIWebView不会在应用程序运行之间保存cookie,你应该尝试这样的东西来保存它们:

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

并使用以下方法加载它们:

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

    for (NSHTTPCookie *cookie in cookies)
    {
        [cookieStorage setCookie: cookie];
    }
}
Run Code Online (Sandbox Code Playgroud)