Készítsen saját webszolgáltatást egy iOS-alkalmazáshoz, az első rész

Az előző TechRepublic sorozatban egy meglévő webszolgáltatást használtunk iOS alkalmazás létrehozására ("Webes szolgáltatás létrehozása, az első és a második rész"). Ebben a sorozatban az iGlobe nevű másik alkalmazás webes szolgáltatási hátterét fogjuk létrehozni, amelyet egy játékkal ezelőtt készítettem.

Alapvetően azt akarjuk, hogy a felhasználó megcímkézzen egy helyet vagy egy személyt, és pontokat szerezzen erre a műveletre. (Az a versenyző, aki a legtöbb játékpontot a játék végén nyeri meg egy pénzes bankot.) Ehhez az alkalmazásnak kölcsönhatásba kell lépnie egy webszolgáltatással, amelyet létrehozunk. Webszolgáltatásunknak képesnek kell lennie arra, hogy:

  • Tárolja az egyes játékosok felhasználóneveit
  • Fogadja a felhasználói pontokat
  • Jelenlegi felhasználói pontok

Ebben az iOS 6/7 oktatóanyagban a SantiappsHelper nevű segédosztályt fogjuk használni, amely tartalmazza a kódot a webes kapcsolatok futtatásához. Az önálló osztályt ilyen esetekben általában könyvtárnak nevezik, amely gondoskodik ezekről a folyamatokról. Ha csak egy példányra van szüksége egy ilyen osztályhoz (mint a mi esetünkben), akkor létrehozzuk a Singleton mintát. Csak a kapcsolat egy példányára van szükség, mivel nem szükséges, hogy a kapcsolatosztály sok példánya létrejöjjön, fogadjon és leválaszthasson - amelyek ugyanahhoz az erőforráshoz több időben több kapcsolattal végződhetnek, ami megzavarhatja Önt vagy a szerver.

Az alábbiakban tárgyaljuk ezt a sorozatot:

1. Hozza létre a webes adatbázist

2. Hozza létre a webszolgáltatás hátterét

3. Hozzon létre iOS felhasználói felületet (Storyboard)

4. Adatok lekérése

  • a. NSURLConnection
  • b. GCD és kitöltési blokkok

5. Cserélje az adatokat az eszközök között az iOS 7 Multipeer Connectivity Framework segítségével

1. lépés: Hozza létre a webes adatbázist

A webszolgáltatások általában nagy információs adatbázisok; adatbázisunknak táblára lesz szüksége az összes fent említett információ tárolására. Négy fő módon működünk együtt az adatbázisokkal: adatok létrehozása, olvasása, frissítése és törlése (CRUD). Tehát vessünk egy rövid kitérőt, és beszéljünk az adatbázisokról - konkrétan azok felépítéséről és arról, hogy miként működünk együtt velük.

adatbázisok

Az adatbázisok információs tárolók, amelyek fájlokként írhatók (például Word vagy PowerPoint). Az ilyen fájlokban szereplő információk előre meghatározott struktúrájúak, így a Word és a PowerPoint tudják, hogyan kell olvasni és hozzáférni annak érdekében, hogy megjelenítsék a kívánt tartalmat, és lehetővé tegyék szerkesztését és újbóli tárolását; a probléma csak az, hogy a Word elolvassa a docx fájlt, és csak a PowerPoint fogja olvasni a pptx fájlt. Az adatbázisok nagy előnye, hogy nagyon kompakt módon tárolnak információkat, és sokféle felületen olvashatók. Minél egyszerűbb az adatbázis, annál több felület képes olvasni.

Olyan adatbázist fogunk használni, amely a legtöbb web hosting szolgáltatásban általában ingyenesen elérhető. Web hosting szolgáltatásomban van a phpMySQL, amelyet egy ingyenes csomag tartalmaz. Ha más adatbázisokat, például MSSQL-t szeretne, fizetős szolgáltatásra van szüksége. Az A ábra az, amire néz ki az adatbázis-kezelő felület.

A ábra

Lásd az A. ábra nagyított nézetét.

Van egy iglobe nevű adatbázis a localhoston két táblával: felhasználók és címkék. A felhasználói táblázat ( B ábra ) tartalmaz egy elsődleges kulcsot felhasználónévvel, jelszóval, jelszójelzéssel, kereszt- és vezetéknévvel, valamint egy e-mailt, telefonszámot, címet és ilyen rendes dolgokat.

B. ábra

Lásd a B. ábra nagyított nézetét.

A címkétáblázatnak ( C. ábra ) megvan a saját elsődleges kulcsa (tagID), a hozzá tartozó felhasználónév, azonosító, a címke szélessége és hosszúsága, a létrehozás dátuma és a felhasználó számára hány pontot érdemel. Van egy országmező is, amelyet később hajtottak végre a projekt előrehaladtával (ez 2011 óta működik).

C. ábra

Lásd a C ábra nagyított nézetét.

2. lépés: Hozza létre a webszolgáltatás háttérrendszerét

Webszolgáltatásunk célja az lesz, hogy ezeket a táblázatokat elolvassa és bármilyen adatot felír nekik, amelyet a felhasználók igényelnek vagy elküldnek nekik. Ez a rész megköveteli a PHP ismereteit. Kezdjük azzal, hogy hogyan néz ki a táblázat olvasásához használt kód.

 kódolnak ($ ​​tomb); ?> 

Először beépítjük a JSON.php fájlt a szerver JSON fájljainak elérése érdekében (győződjön meg arról, hogy a webszerver vagy a host legalább PHP 5.2-es verzióval rendelkezik). Ezután kapcsolódunk az adatbázishoz az adatbázis felhasználó és jelszó, valamint az adatbázis gazda segítségével. Most létrehozunk egy tömbobjektumot, tehát miután végrehajtottuk a mysql_query-t, ahol a felhasználói táblából származó összes bejegyzés összegyűjtésre került $ rs-be, beilleszthetjük azt az $ arr objektumba. Végül a $ arr kódoljuk a $ json fájlba, és visszhangoljuk a képernyőre.

Amint ez a kód elkészül, és készen áll az adatbázisára (beleértve néhány rekordot), a böngészőt erre a fájlra irányíthatja (amelyet én myserver.com/getusers.php-nek hívtam). A következő eredményt kapom:

 {"id": "35", "felhasználónév": "zlitsami", "jelszó": "932d1c42a4e4880e57037994fd3584b1", "password_hint": "", "vezetéknév": "", "keresztnév": "", "e-mail" : " ", "telefon": "", "cím1": "", "cím2": "", "város": "", "állam": "", "zip": "", "ország": "", "url:" ", " engedélyek ":" 1 ", " udid ":" 9 ", " userCreated ":" 2013-01-01 14:27:22 ", " time_queued " : null, "time_sent": null}, {másik}, {másik} 

Ez egy tömb, amelyben sok elem található. Minden elem a felhasználó táblázata. Mindegyik bejegyzés a kulcsérték-párok szótára. Ismerősnek tűnik?

Most, hogy tudjuk, hogyan kell információkat kiolvasni az adatbázisunkból, hozzuk létre a kódot az adatbázisba történő íráshoz.

Újból csatlakozunk az adatbázisunkhoz, és létrehozunk egy sql utasításokat a beillesztendő értékekkel (ezek az értékek online vagy mobil eszköz formájában származnak). Ezt a sql utasítást végrehajtjuk a kapcsolatunkkal, és visszatükrözzük az eredményeket a felhasználóhoz történő ellenőrzés céljából. Ezt a fájlt írniphp.php-nek hívtam.

Mielőtt az iOS-ra lépnénk, teszteljük szolgáltatásunkat online. Hozzon létre egy Writeform.html nevű HTML fájlt, és mentse oda a kódot:

Név:
UDID (szükségtelen):
Szélességi kör:
Hosszúság:
Ország
Receiver

Most töltse be az űrlapot a böngészőbe, és küldje el az adatokat az adatbázisába.

Nem akarom ezt a webszolgáltatást túl bonyolossá tenni, mivel az iOS oldalán szeretném figyelmüket tartani, ezért hozzunk létre egy űrlapot, amely végül weboldalunk egyes pontjait olvassa le egy adott felhasználó számára. Hozzon létre egy másik, Testform.html nevű HTML fájlt, és mentse oda a kódot:

 felhasználó: 

És hozza létre a php párját:

 kódolnak ($ ​​RESULTADO); ?> 

Ezt az utóbbi kis kódot később fogjuk használni, amint további adatok bekerülnek az adatbázisba.

Eddig van egy erőforrás, amely visszaadja a pontokat egy adott felhasználó számára, a readpoints.php; ezt hívják webszolgáltatási végpontnak. A webszolgáltatásoknak sok végpontja lehet. Egy játékban vagy alkalmazásban előfordulhat, hogy egyszerre sok felhasználói pontot akarunk szerezni, hogy kitöltsük például a ranglistát. Lehet, hogy sok tranzakciót szeretnénk letölteni számla-adatbázisból, nem egyenként. Tehát menjünk előre és hozzunk létre egy végpontot a bemeneti adatok halmazának kezelésére. Esetünkben képesnek kell lennünk arra, hogy továbbadjuk a webszolgáltatást egy felhasználói csoportnak. A fájlunk így néz ki:

 "ok", "kód" => 0, "eredeti kérés" => $ post_data); else $ response = array ("status" => "error", "code" => - 1, "original_request" => $ post_data); // 2. CALL DB QUERY $ link = mysql_pconnect ("localhost", "felhasználónév", "jelszó") vagy meghal ("Nem sikerült csatlakozni"); mysql_select_db ("iglobe") vagy die ("Nem lehet kiválasztani az adatbázist"); // 3. LÉTREHOZZA A ZÁRÓ RÉSZET a $ VISSZATÉRÉShez arrayToReturn = array (); // 4. CIKLUS A FELHASZNÁLÓK SZÁMÁRA foreach ($ post_data $ értékként) {// LÉPÉS LÉTREHOZÁSA $ eredmény = mysql_query ("SELECT felhasználónév, SUM (pontok) AS PUNTOS FEL címkékből, ahol felhasználónév = '$ érték' GROUP by felhasználónév"); // VÉGREHAJTÁS & MINDEN FELHASZNÁLÓ SZÁMÁRA / TÖRLÉSE SZAKKÉPESSÉGET A $ resultado ARRAY $ eredményado = array (); míg ($ obj = mysql_fetch_object ($ eredmény)) {$ arrayToReturn  = $ obj; }} Echo $ json-> kódolás ($ arrayToReturn); ?> 

Ez az alapvető php-kód veszi az átadott tömböt, amint már említettük, és végigkíséri az adatbázist, hogy pontokat kapjon az egyes felhasználók számára. Ez azért fontos, mert sok utat takarítunk meg a webszerver adatbázisába.

3. lépés: Hozzon létre iOS felhasználói felületet (Storyboard)

Most dolgozunk az iOS Storyboardon vagy az előlapon. Akkor merev kódoljuk az adatokat és lekérjük az internetet a tényleges háttérből; Ily módon láthatjuk, hogy az adatmodellek vonatkozásában mi igényel felületünket -, majd beolvashatjuk az internetes adatokat, és helyettesíthetjük adatainkat ezekben az adatmodellekben. Az adatok beolvasásának két módját is megtanuljuk: soros, rendetlen kód, valamint ügyes és rendezett kódolás.

Kovesd ezeket a lepeseket:

  1. Hozzon létre egy új üres projektet Storyboards, ARC, iPhone és NO Core Data használatával.
  2. Menj a forgatókönyvhöz, és húzzon egy UITableViewControllert a rácsra.
  3. Hozzon létre egy UserListViewController nevű osztályt. A Storyboard-ban válassza ki a jelenetet, és az Identity Inspector-ban adja meg a jelenetünk UserListViewController típusát a legördülő listából.
  4. Futtasson egy gyors tesztet, hogy megbizonyosodjon arról, hogy a tvc működik-e.
  5. Építés és futtatás. Üres asztal nézetet kell kapnia.

Nézzük át, mit fogunk tenni ebben a szakaszban:

  • Adjon hozzá egy tömb tulajdonságot a .m fájlhoz
  • Töltse ki a tömböt a viewDidLoad fájlban
  • Távolítsa el a bosszantó figyelmeztető vonalakat
  • Táblázat nézettel térjen vissza egy részre
  • Táblázat nézet visszatérési tömb számlálása
  • Készítsen tábla nézet cellák visszatérő tömb objektumait

Ez mostantól második természet lehet neked, tehát áttekintem a részleteket.

Itt van az ingatlan kódja:
 @tulajdonság (nem anatómiai, erős) NSArray * testArray; Itt van a viewDidLoad kód: - (érvénytelen) viewDidLoad {super viewDidLoad; self.testArray = NSArray alloc initWithObjects: @ "én", @ "te", @ "nekik", nulla; NSLog (@ "tömb% d", self.testArray szám); } 

Itt található a visszatérő tömb számlálója:

 visszatérés self.testArray count; 

Itt van a cFRAIP kód:

 - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {statikus NSString * CellIdentifier = @ "Cell"; UITableViewCell * cell = tableView dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath; // A cella konfigurálása ... cell.textLabel.text = self.testArray objectAtIndex: indexPath.row; visszatérő cella; } 

Mielőtt elkészítené és futtatná, válassza a UITableViewCell elemet a Storyboard-ban, és az Attributes Inspectorban ellenőrizze, hogy a Cell-ot használja-e újrafelhasználási azonosítóként. Az alkalmazásának jól kell működnie.

Ha most készít és fut, akkor a felhasználókat megjeleníteni kell az asztalnézetben. Menő! Ez az, amit meg akarunk csinálni - azaz megjeleníteni a felhasználók listáját egy asztalnézetben, majd hozzáadni a pontokat, mint egy eredménytáblát.

A D ábra egy makett arról, hogy mi fog kinézni alkalmazásunk. Lényegében egy fülsáv-vezérlővel kezeljük három nézetet: Felhasználók, Térkép és Útmutatások. Az alkalmazás indulásakor bejelentkezési nézetet is dobunk. Ennek képet ad arról, hogy milyen feladatokat kell elvégeznünk ennek végrehajtásához.

a) Mutassa be a bejelentkezési nézet vezérlőt

b) Mentse el a felhasználói és átadási információkat

c) Felhasználói adatok beolvasása a webszolgáltatásból

d) A pontok ábrázolása a térképen

e) Az utasítások megjelenítése nézetben

D. ábra

Lásd a D. ábra nagyított nézetét.

Ezt újra létre kell hoznia a Storyboard-ban. Itt vannak az alapvető lépések:

1. Válassza ki a meglévő UsersViewController jelenetet, majd a Szerkesztő menüből válassza a Beágyazás | lehetőséget Tab sávvezérlő. Szükség van egy jelenetre és egy osztályra a UsersViewController számára, és a jelenetet az Identity Inspector osztálytípusára kell állítani.

2. Törölje ki a második jelenetet, amelyet akkor adtak hozzá, amikor az asztalnézet-jelenetet beágyazta egy tab-sávba (a törlés alatt azt értem, hogy ellenőrizze, hogy nincs-e benne címke vagy egyéb vezérlőelem). Most húzza bele egy UIMapView-t. Adjon hozzá egy UINavigationBar-t a tetejére és a két gombra (Plot and Bump) mindkét oldalon. Hozzon létre egy MapViewController osztályt, és állítsa be annak típusát. Adjon hozzá egy MKMapView IBOutlet tulajdonságot és két UIBarButtonItem IBOutlet tulajdonságot, és csatlakoztassa őket. Adja hozzá az MKMapViewDelegate elemet.

3. Az utolsó nézethez adjon hozzá egy másik UIViewController elemet, és húzza bele az UIWebView és az UINavigationBar elemet. Hozza létre az osztályfájlját, és nevezze el InstructionsVC-nek. Adjon hozzá egy UIWebView IBOutlet tulajdonságot, és csatlakoztassa. Adja hozzá az UIWebViewDelegate elemet, és ne felejtse el beállítani a jelenet típusát.

4. Adjon hozzá egy UIViewController-t, hívja ModalViewController-nek ( az E ábra néz ki az enyémnek), és hozza létre az összes IBOutlet tulajdonságot - ez négy címke statikus szöveggel (Felhasználó, Jelszó, E-mail és Jelzés szükséges ...). Három UITextField található helyőrző szöveggel a felhasználó irányításához. Három UIB gomb található a különböző műveletekhez. A személy ikon egy gomb, amelynek háttérképe a képre van állítva; ez lesz a gomb, amelyet a felhasználók használnak képeik feltöltésére a webszerverre.

Más osztályfájlok, amelyeket most létrehozhatunk, a TagListController, a Tag / Users Model és a Annotation / PlacemarkVC.

E ábra

Lásd az E. ábra nagyított nézetét.

Szánjon néhány percet annak megjelenítésére, hogy mi fog kinézni az alkalmazás elrendezése, most, amikor jobb képet kapunk arról, hogy hova tartunk, majd hasonlítsa össze a megjelenítést az alkalmazás kezdeti vázlatával.

A második részben csatlakozunk a webszolgáltatáshoz, és lekérjük a tényleges adatokat.

© Copyright 2020 | mobilegn.com