Supaya aplikasi bisa terhubung dengan server untuk transaksi database, maka dibutuhkan networking / koneksi ke server. Untuk mengkoneksikan ke server kita akan belajar menggunakan library Alamofire yang dikembangkan oleh Alamofire Software Foundation.
Buat new project seperti berikut :
Klik kanan New File…
Pilih Source Cocoa Touch Class, klik Next
Input Class : ViewLogin, Subclass of : UIViewController, klik Next
Klik Create
Tampilan ViewLogin
Selanjutnya klik Main.storyboard -> Klik ViewController -> pada pojok kanan atas Klik Show the Identity Inspector, pada Cutom Class -> Class ganti dengan ViewLogin yang sudah kita buat.
Klik Show the Asistant editor pojok kanan atas, pilih All Editor Stacked Horizontally
Selanjutnya kita menghubungkan desain dengan Source Code pada setiap komponen. Dengan cara menekan tombol keyboard Control + Drag ke Source Code. Lakukan untuk semua label dan Button.
Maka hasil pada source code :
// ViewLogin.swift // Sewa Mobil // // Created by Handoyo on 3/28/18. // Copyright © 2018 Handoyo. All rights reserved. // import UIKit import Alamofire import SwiftyJSON class ViewLogin: UIViewController { @IBOutlet weak var labelEmail: UITextField! @IBOutlet weak var labelPassword: UITextField! override func viewDidLoad() { super.viewDidLoad() } @IBAction func goLogin(_ sender: Any) { } }
Membuat networking menggunakan Library Alamofire.
- Install Cocoapod terlebih dahulu.
Buka terminal, ketikkan code :
# Xcode 8 + 9
$ sudo gem install cocoapods - Masih di Terminal (pod sudah terinstall), ketikkan code :
$ pod init - Masih di Terminal, ketikkan code :
$ open -a xcode Podfile, ketikkan add pada Podfile, “pod ‘Alamofire'” dan “pod ‘SwiftyJSON'”
- Masih di Terminal, ketikkan code :
$ pod install
Buka info.plist (untuk koneksi) tambahkan code seperti berikut :
Ketikkan code pada Action Button Login :
@IBAction func goLogin(_ sender: Any) { DispatchQueue.main.async(execute: { let parameters = [ "email": self.labelEmail.text!, "password": self.labelPassword.text! ] let url:String = "http://localhost/sewamobil/api/login.php" Alamofire.request(url, method: .post, parameters: parameters).responseJSON { response in if let value = response.result.value { let json = JSON(value) for item in json["login"].arrayValue { if (item["info"].stringValue == "Success, You are now login!") { let alertController = UIAlertController(title: "Login Success!", message: item["info"].stringValue, preferredStyle: .alert) let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in } alertController.addAction(OKAction) self.present(alertController, animated: true, completion:nil) } else { let alertController = UIAlertController(title: "Login Failed!", message: item["info"].stringValue, preferredStyle: .alert) let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in } alertController.addAction(OKAction) self.present(alertController, animated: true, completion:nil) } } } } }) }
Build / Run Project
Hasil di simulator iPhone X
NB : ( Untuk Rest API yang menggunakan Content-Type : multipart/form-data )
Contoh penggunaan seperti berikut :
let headers = [ "Content-Type": "multipart/form-data" ] let catalog_nama: String = "Buku Saku Pramuka" let catalog_harga: String = "7500" let catalog_deskripsi: String = "Edisi Terbaru 2021" let catalog_image: String = "http://127.0.0.1:8000" DispatchQueue.main.async(execute: { let url:String = "http://127.0.0.1:8000/create_product" Alamofire.upload(multipartFormData: { multipart in multipart.append(catalog_nama.data(using: .utf8)!, withName: "catalog_nama") multipart.append(catalog_harga.data(using: .utf8)!, withName: "catalog_harga") multipart.append(catalog_deskripsi.data(using: .utf8)!, withName: "catalog_deskripsi") multipart.append(catalog_image.data(using: .utf8)!, withName: "catalog_image") }, to: url, method: .post, headers: headers) { [self] encodingResult in switch encodingResult { case .success(let upload, _, _): upload .validate(statusCode: 200 ..< 300) .responseJSON { [self] response in switch response.result { case .success: if let value = response.result.value { let json = JSON(value) let alertController = UIAlertController(title: "Success", message: json["message"].stringValue, preferredStyle: .alert) let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in } alertController.addAction(OKAction) self.present(alertController, animated: true, completion:nil) } case .failure(let error): handleError(error: error) } } case .failure(let error): handleError(error: error) } } }) func handleError(error: Error) { let alertController = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .alert) let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in } alertController.addAction(OKAction) self.present(alertController, animated: true, completion:nil) }
Sekian dulu tutorialnya, selamat mencoba.
Happy coding 🙂
I’m a result mobile engineer, as well as deep understanding of digital systems.