Sie können Javascript verwenden, um dies zu tun.
Wenn Sie die Seite überprüfen, können Sie die IDs der Texteingabefelder (expert_email
und expert_password
) ziemlich leicht erkennen und einen JS-Code ausführen, um sie zu füllen.
Implementieren die webViewDidFinishLoad
Methode der UIWebView
Delegierten etwa so:
Objective-C:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//fill data
NSString *email = @"[email protected]";
NSString *password = @"mypassword";
NSString *fillDataJsCall = [NSString stringWithFormat:@"document.getElementById('expert_email').value = '%@';document.getElementById('expert_password').value = '%@';", email, password];
[webView stringByEvaluatingJavaScriptFromString:fillDataJsCall];
//check checkboxes
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;"];
//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void)
{
[webView stringByEvaluatingJavaScriptFromString:@"document.forms[\"new_expert\"].submit();"];
});
}
SWIFT:
func webViewDidFinishLoad(webView: UIWebView) {
// fill data
let savedUsername = "USERNAME"
let savedPassword = "PASSWORD"
let fillForm = String(format: "document.getElementById('expert_email').value = '\(savedUsername)';document.getElementById('expert_password').value = '\(savedPassword)';")
webView.stringByEvaluatingJavaScriptFromString(fillForm)
//check checkboxes
webView.stringByEvaluatingJavaScriptFromString("document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;")
//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1 * NSEC_PER_SEC)), dispatch_get_main_queue()){
webView.stringByEvaluatingJavaScriptFromString("document.forms[\"new_expert\"].submit();")
}
}
Dies sollte Ihre Informationen füllen. Dieser Code kann jedoch leicht brechen, wenn diese Website in Zukunft ihre Struktur ändert. Diese Methode zum Ausführen von JS-Code ist sinnvoller, wenn Sie Ihre eigenen Seiten bearbeiten.
Edit:
ich den Code aktualisiert zu demonstrieren, wie die Kontrollkästchen zu überprüfen und wie das Formular abzuschicken.
Einige Anmerkungen:
- wenn die Anmelde die Seite nicht neu geladen wird, so dass Sie gehen mit einer Endlosschleife von Anrufen zu
webViewDidFinishLoad
am Ende, da Sie versuchen zu übermitteln und immer wieder, Vielleicht möchten Sie in diesem Fall etwas Logik hinzufügen, um zu brechen. Deshalb setze ich eine Verzögerung ein, bevor ich mich einschicke, um sehen zu können, was vor sich geht.
- Zusätzlich zu den Informationen im vorherigen Punkt - Sie werden Anrufe nach
webViewDidFinishLoad
trotzdem erhalten, nachdem die Anmeldung erfolgreich war (wenn Sie auf die nächste Seite umgeleitet werden), also möchten Sie vielleicht ein Flag erhöhen, sobald eine andere Seite geladen wird der Login-Versuch nur auf der Login-Seite).
Ich würde den Benutzernamen in 'NSUserDefaults' speichern. Für das Passwort können Sie die TouchID verwenden, nachdem der Benutzer sein Passwort eingegeben hat. Einfaches automatisches Ausfüllen des Passworts wäre nicht sehr sicher. –
Nein, aber ist eine App nur für mich! Mein Problem besteht nur darin, meine Benutzernamen und Passwort-Strings zu nehmen und die Formulare auf der Webseite zu füllen. –