Извиняюсь за то, что не ответил прямо на ваш вопрос, но я думаю, что вы, возможно, захотите рассмотреть более простой вариант.Вы должны быть в состоянии прослушать отправку формы, не вставляя JavaScript в UIWebView
.Просто реализуйте что-то подобное в вашем UIWebViewDelegate
:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[[request URL] absoluteString] hasPrefix:@"https://www.thirdpartysite.com/theirLoginScript"]) {
NSString *username = [self parseUsernameFromRequest:request];
NSString *password = [self parsePasswordFromRequest:request];
[self saveUsername:username andPassword:password];
}
return YES;
}
Я оставил реализации parseUsernameFromRequest:
, parsePasswordFromRequest:
и saveUsername:andPassword:
для вашего воображения.
(Подсказка: если форма использует метод GET, вы можете получить ее параметры, используя [[request URL] parameterString]
. Если форма использует метод POST, вы можете использовать [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]
.)
Кстати, вы никогда не должны хранить конфиденциальную информацию, такую как пароли, в NSUserDefaults.Apple предоставляет Keychain Services для безопасного хранения информации такого типа.К сожалению, работа со Службами Цепочки для ключей на удивление сложна, поэтому вы можете попробовать Простой Код Брелка для iPhone Базз Андерсена .