IOS-APP mit Login/Register und UserArea etc..

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • IOS-APP mit Login/Register und UserArea etc..

    Hallo liebe Community,

    ich bin in der App-Entwicklung von IOS recht neu.

    Vor einiger Zeit, habe ich ein kleines Projekt in Android begonnen. Hier konnten sich User einen Account anlegen und diesen Einloggen. Dies lief mittels MySQL.

    Ninja. Ich habe das ganze mal mittels Firebase versucht, jedoch ist das nichts für mich. Da ich einen eigenen Webspace besitze, wo ich eine Datenbank in unendlicher große anlegen kann, wäre dies wohl das beste. Dennoch blicke ich bei IOS da nicht durch. Das GUI ist schon fertiggestellt, dennoch weis ich nicht wo ich anfangen soll.. Hat einer gute Tutorials oder kann mir da ein wenig helfen? Codeschnipsel, zum Connection, auslesen und abspeichern der Daten würden mir schon extrem helfen, ich habe lediglich keine Ahnung, wie das bei Swift geregelt wird...

    In Android (bzw. Java) ist das doch um Weiten einfacher (zumal ich darin auch schon einige Jahre an Erfahrung habe).

    Über Antworten von euch freue ich mich schon jetzt sehr!:)
  • Ich bin leider in dem ganzen Datenbank-Zeugs nicht der hellste... Wie meint ihr das mit einen Webservice erstellen, der die DB-Kommunikation regelt?. Meint ihr damit z.B Ein JSonFile bzw. PHP, welches die Datenbank verbindet und Daten ausliest etc auf meinem Webserver hochladen und dann dieses php File in Swift mittels dem Link aufrufen?
  • Lenon schrieb:

    Wie meint ihr das mit einen Webservice erstellen, der die DB-Kommunikation regelt?. Meint ihr damit z.B Ein JSonFile bzw. PHP, welches die Datenbank verbindet und Daten ausliest etc auf meinem Webserver hochladen und dann dieses php File in Swift mittels dem Link aufrufen?
    Die Datenbank nimmst Du vom öffentlichen Netz, sonst ist hört die bald auf einen anderen Herren. Die soll nur noch intern erreichbar sein.

    Der Webservice ist dann deine Schnittstelle zwischen Internet und Datenbank. Der nimm auf einer URL die Anfragen deiner App entgegen, prüft ob das was da rein kommt zulässig ist, und gibt das dann an die Datenbank weiter.

    Womit Du das realisierst (PHP, Python, Ruby, Perl, Go, Node.js, Erlang, Java, etc.) ist vorerst sekundär. Hauptsache die Datenbank kommt vom Netz, bevor sie jemand anderes in die Finger bekommt. – Google mal nach Datenbank und Lösegeld; bzw. database und ransom.
    * Kann Spuren von Erdnüssen enthalten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NSObject ()

  • Ich benutze den Webspace nur für mich. Bzw. Die App wird nirgends veröffentlicht, sondern bietet mir lediglich die Möglichkeit, meine Fähigkeiten möglichst "Praxisnah" zu entwickeln sag ich jetzt mal... Ich habe mir nun ein eigenes Backend geschrieben, welches den User registrieren soll und Die Daten zurück gibt. Nun bekomme ich in meiner conn prepare Methode folgende Fehlermeldung:

    Fatal error: Uncaught Error: Call to a member function prepare() on null in XXXXXXXXX/access.php:57 Stack trace: #0 XXXXXXXX/register.php(39): access->registerUser('username', '3c39eccd6dcf2f4...', 'U\xBC\xEC\x86,?#\x90P)88=\x03n...', 'mail') #1 {main} thrown inXXXXXXX/access.php on line 57

    Die Verbindung zur Datenbank funktioniert einwandfrei.

    access.php Zeile 57 -> $statement = $this->conn->prepare($sql);
    register.php Zeile 39 -> $result = $access->registerUser($username, $secured_password, $salt, $email);

    (XXX ist der genaue Pfad der Dateien..)

    Die RegisterUser Methode:

    Quellcode

    1. //Step 3. Insert user Information
    2. $result = $access->registerUser($username, $secured_password, $salt, $email);
    3. if ($result){
    4. $user = $access->selectUser($username);
    5. $returnArray["status"] = "200";
    6. $returnArray["message"] = "Succesfully registered.";
    7. $returnArray["id:"] = $user["id"];
    8. $returnArray["username"] = $user["username"];
    9. $returnArray["email"] = $user["email"];
    10. $returnArray["ava"] = $user["ava"];
    11. }else {
    12. $returnArray["status"] = "400";
    13. $returnArray["message"] = "Could not register with provided Information.";
    14. }
    15. //Step 4. Close connection
    16. $access->disconnect();
    17. echo json_encode($returnArray);
    Alles anzeigen

    Die Access Datei:


    Quellcode

    1. public function registerUser($username, $password, $salt, $email){
    2. //sql Command
    3. $sql = "INSERT INTO users SET username=?, password=?, salt=?, email=?";
    4. //store query result in statement
    5. $statement = $this->conn->prepare($sql);
    6. // if error
    7. if (!$statement){
    8. throw new Exception($statement->error);
    9. }
    10. //Bind Four Parameters of String to the placed in sql Command
    11. $statement->bind_param("ssss", $username, $password, $salt, $email);
    12. $returnValue = $statement->execute();
    13. return $returnValue;
    14. }
    15. //Select user information
    16. public function selectUser($username){
    17. //sql Command
    18. $sql = "SELECT * FROM users WHERE username='".$username."'";
    19. //Assign result we got from $sql to $result var
    20. $result = $this->conn->query($sql);
    21. //if we have at least 1 result returned
    22. if ($result != null && (mysqli_num_rows($result) >= 1)){
    23. //Assign result we got to $row as associate array
    24. $row = $result->fetch_array(MYSQL_ASSOC);
    25. if (!empty($row)){
    26. $returnArray = $row;
    27. }
    28. }
    29. return $returnArray;
    30. }
    Alles anzeigen
  • Das hat sich erledigt habe mein Backend fertig gestellt bekommen.. Jetzt habe ich allerdings ein ganz anderes problem. In den ganzen Tutorials, die ich geschaut habe, wird die die /register.php Datei mittels NSURL etc ausgeführt, jedoch unterstützt Swift 3 das ganze nicht mehr... Habt ihr da evtl ein aktuelles Tutorial oder könnt mir da weiterhelfen?
  • Mal ein Versuch... Bei mir funktioniert es.

    JavaScript-Quellcode

    1. let urlstring = "https://osxentwicklerforum.de/test/filelist/files.php"
    2. let url = URL(string: urlstring)
    3. var request = URLRequest(url: url!)
    4. let session = URLSession.shared
    5. let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
    6. print("Error: \(error)")
    7. print("Response: \(response)")
    8. var dataString = String(data: data!, encoding: String.Encoding.utf8) as String!
    9. print("DataString: \(dataString)")
    10. })
    11. task.resume()
    Alles anzeigen
    Disclaimer: Ich habe effektiv keine Ahnung von Swift. Daher mit Vorsicht und ohne Gewähr genießen.
    * Kann Spuren von Erdnüssen enthalten.
  • NSObject schrieb:

    Mal ein Versuch... Bei mir funktioniert es.

    JavaScript-Quellcode

    1. let urlstring = "https://osxentwicklerforum.de/test/filelist/files.php"
    2. let url = URL(string: urlstring)
    3. var request = URLRequest(url: url!)
    4. let session = URLSession.shared
    5. let task = session.dataTask(with: request, completionHandler: { (data, response, error) in
    6. print("Error: \(error)")
    7. print("Response: \(response)")
    8. var dataString = String(data: data!, encoding: String.Encoding.utf8) as String!
    9. print("DataString: \(dataString)")
    10. })
    11. task.resume()
    Alles anzeigen

    Disclaimer: Ich habe effektiv keine Ahnung von Swift. Daher mit Vorsicht und ohne Gewähr genießen.
    Klingt und sieht ganz gut aus. Aber wie bekomme ich jetzt da die Daten, die mir innerhalb meines php Files als JSON encoded werden und mittels echo (zumindest echo wenn ich das ganze im browser mache) zurückgegeben werden? Sorry aber ich finde Swift um einiges komplizierter als Java bekomme folgenden Error, wenn ich der url noch den Body hinzufüge...


    Quellcode

    1. 2017-02-16 17:53:59.957633 BikingApp[3877:226765] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/Passi/Library/Developer/CoreSimulator/Devices/C076E722-3BA9-4B0C-A68C-914C5E332B49/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
    2. 2017-02-16 17:53:59.958757 BikingApp[3877:226765] [MC] Reading from private effective user settings.
    3. 2017-02-16 17:54:06.618 BikingApp[3877:226991] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
    4. Error: Optional(Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSUnderlyingError=0x608000244aa0 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}, NSErrorFailingURLStringKey=http:///register.php, NSErrorFailingURLKey=http://codingwelt.de/register.php, NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.})
    5. Response: nil
    6. fatal error: unexpectedly found nil while unwrapping an Optional value
    7. (lldb)

    (der erste Errorcode war der falsche)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Lenon ()

  • Google mal nach "ATS": Du versuchst, ohne Transportverschlüsselung nur per HTTP auf eine Resource zuzugreifen. Das geht zwar (noch), erfordert aber entsprechende Angaben in der info.plist...

    Mattes

    P.S.: Steht auch vergleichsweise deutlich in der Fehlermeldung ;)
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Google mal nach "ATS": Du versuchst, ohne Transportverschlüsselung nur per HTTP auf eine Resource zuzugreifen. Das geht zwar (noch), erfordert aber entsprechende Angaben in der info.plist...

    Mattes

    P.S.: Steht auch vergleichsweise deutlich in der Fehlermeldung ;)
    Ich blick da irgendwie bei den Fehlermeldungen nicht durch haha Sorry... Kennst du zufällig, den code bzw. text was in die .plist rein muss?