CategoriesiOSSwift

Simple List with SwiftUI

Introduction

SwiftUI ialah framework UI baru yang dikenal oleh apple semenjak iOS 13 pada WWDC2019. SwiftUI ini sendiri bersifat deklaratif sehingga gampang sekali untuk membuat UI dengan framework ini. Selain itu SwiftUI juga memiliki fitur yang sangat menarik yaitu kemampuan untuk MultiPlatform, yaitu sekali coding SwiftUI mampu berjalan di iPhone, iPad, MacOS serta AppleWatch.

Menurut saya sendiri, SwiftUI akan semakin banyak digunakan oleh developer yang ada di dunia. Pada WWDC kemarin sendiri, weather app pada iOS 15 sudah ditulis ulang menggunakan SwiftUI sendiri. Hal ini memungkinkan bahwa SwiftUI cukup stable untuk dilanjutkan pada tahap production.

Ayo kita telusuri SwiftUI bersama-sama

Hands On

Pada artikel ini kita akan mencoba membuat sebuah aplikasi list contact sederhana untuk mendemontrasikan seberapa gampang membuat UI dengan framework ini sendiri.

Ini merupakan template default dari SwiftUI sendiri, pada SwiftUI kita sudah tidak mengenal Storyboard hahaha. Kodingan yang diperlukan untuk membuat UI akan kita tulis pada bagian body.

Default Template

Prepare Dummy Data

Ayo kita menyiapkan dummy data kita seperti ini

Dummy Data

Membuat List

Bahkan untuk membuat tampilan list sederhana kita hanya perlu kode kurang dari 10 baris

List

Hanya dengan beberapa baris kode, kita sudah dapat membuat UI dengan sangat gampang. Apabila kita menggunakan UIKit, maka teman-teman sudah bisa menebaknya. Kita harus melakukan setup dengan UITableViewDataSource dan UITableViewDelegate kemudian kita juga perlu membuat tableviewcell serta kita juga perlu berurusan dengan autolayout.

Kesimpulan

Semoga dengan contoh seperti ini dapat memberikan gambaran seberapa powerful SwiftUI ini. Walaupun SwiftUI ini sendiri belum akan digunakan pada waktu yang dekat, namun SwiftUI ini sendiri dapat menjadi investasi yang baik untuk masa depan. Berikut referensi video pertama kali SwiftUI diperkenalan pada WWDC2019.

https://developer.apple.com/videos/play/wwdc2019/204

CategoriesiOSProgrammingSwift

Dependency Inversion in iOS

Introduction

Mungkin teman-teman sudah pernah mendengar mengenai SOLID Principle yah. Pada artikel ini kita membahas mengenai Dependency Inversion yang merupakan D dari SOLID. Dependency Inversion ini mengatakan bahwa

“High level modules should not depend on low level modules, both should depend on abstractions. Abstractions should not depend on details. Details should depend upon abstractions. “

High module di sini dapat berupa kelas yang akan mengimplementasikan fitur-fitur yang biasanya merupakan class ViewController.
Low module ini sendiri ialah sub-module yang akan akan digunakan oleh High Module, contoh umumnya seperti NetworkService, DataService, UserDefaultService dll.

Dependency Inversion di sini berfungsi agar kode yang kita tulis dapat bersifat lebih flexible dan mudah untuk dimodifikasi atau biasanya disebut dengan “Loose Coupling”

Code Example

Nah ini contoh pattern yang umum sering dijumpai pada project iOS yang ada.

Biasanya kita membuat sebuah class Singleton dan memanggil dalam class ViewController yang ada. Ini merupakan contoh kode yang menyalahi aturan Dependency Inversion, karena class ViewController tahu DataSourceService secara detail tanpa melalui Abstraction.

Memang tidak ada yang salah dengan kode ini, karena aplikasi yang ada juga berjalan dengan baik. Namun setiap kali terjadi perubahan, maka kita harus merefactor/mengganti kode-kode yang ada. Atau misalnya beberapa bulan ke depan, datasource yang ada berubah dari Firebase menjadi MonggoDB, BackEnd service dll. Nah di sini principle Dependency Inversion memiliki peran yang sangat penting.

Hands On

Di sini class ViewController bergantung pada abstraction seperti DataProviderProtocol. Nah di sini, class ViewController tidak lagi peduli bahwa data yang ada berasal dari mana, yang penting bahwa melalui abstraction ini class ViewController akan mendapatkan data.

Nah pada class SceneDelegate, kita tinggal melakukan dependency injection melalui initialzer terhadap class ViewController ini. Nah contohnya di sini kita menggunakan FirebaseDataProvider.

Seandainya beberapa minggu yang ada, tiba-tiba terjadi migration backend service dari Firebase ke dalam BackEnd company sendiri. Kita tidak perlu lagi mengganti kode yang ada pada class ViewController setiap kali ada perubahan.

Conclusion

Selama sebuah class comform terhadap DataProviderProtocol ini, kita bisa mengganti/melakukan update dengan mudah tanpa merusak kode yang sudah ada. Dengan mengerti aturan dari SOLID ini, kita bisa membuat arsitektur kode yang lebih flexible dan tentunya kode yang ada bersifat testable.

Semoga bisa bermanfaat dan memberikan insight terhadap teman-teman.

Full Project
https://github.com/windywu812/DependencyInversionDemo

CategoriesiOSProgrammingSwift

Leverage MVC Pattern in iOS

Introduction

MVC (Model-View-Controller) adalah salah satu architecture pattern yang menjadi base dari projek baru dari iOS. Saya cukup yakin jika semua iOS developer tentunya tahu dengan pattern ini. Secara umum MVC terdiri 3 komponen yaitu:

  1. Model
    Komponen atau layer ini berisi data model aplikasi, networking service, data persistence dll. Intinya komponen ini berisi logik yang berhubungan data yang ada pada aplikasi kita.
  2. View
    Untuk komponen ini sendiri pastinya kita sudah tahu yaitu Storyboard yang berfungsi untuk membuat view dari aplikasi kita.
  3. Controller
    Komponen ini biasanya kita sebut dengan ViewController, yang berfungsi menjadi jembatan antara model dan view. Di mana controller ini bertugas untuk memanggil data dan mengupdatenya ke dalam view, atau mengirim sebuah respon atau action ketika view seperti button, textfield dll mengalami perubahaan state.

Problem

Untuk architecture ini sendiri menurut saya sangat cocok untuk aplikasi yang masih sederhana, namun kenyataannya implementasi yang ada masih salah. Biasanya dalam project yang ada, kita selalu menempatkan semua logic yang ada dalam ViewController bukan? Biasanya untuk melakukan fetching data, maka kita memanggil Singleton ke dalam ViewController yang ada. Sehingga yang ada bukanlah MVC(Model-View-Controller), melainkan Massive View Controller.

Beberapa masalah yang terjadi:

  1. Menyalahi aturan Single Responsibility Principle di mana ViewController menghandle terlalu banyak operasi, ViewController seharusnya hanya bertugas untuk memanggil dan melakukan update.
  2. ViewController seharusnya tidak mengetahui implementasi detail dari operasi tersebut, dalam kasus ini kita telah menyalahi aturan dari Dependency Inversion Principle, “Module shoud not depend on Detail/Implementation (Concrete Class), it should depend on abstraction”. Dengan menyalahi aturan tersebut, class ViewController menjadi Tighly Couple dengan Singleton yang ada, dan menyebabkan kode yang ada susah untuk ditest.

Nah untuk mengatasi hal tersebut tidaklah susah, kita cukup memanfaatkan Dependency Injection dan mengikuti aturan Dependency Inversion. Ayo kita langsung hands-on aja.

Starter Project
https://github.com/windywu812/BetterMVC

Hands-On

Silahkan membuka branch Main, aplikasi ini ialah aplikasi sederhana yang memuat games dari API dan menampilkannya pada tableview yang ada. Struktur kode tersebut merupakan struktur kode yang sering kita lihat dalam beberapa project. Secara sekilas struktur kode yang ada sudah cukup rapi, namun masih dapat dikembangkan. Dalam kode ini, ViewController masih bergantung pada class NetworkService, sehingga ketika membuat test kita harus menguji implementasi yang asli (memanggil data langsung) yang biasanya memakan waktu cukup lama, padahal sebuah UnitTesting harus berjalan dengan cepat.

1. Mendefine sebuah Protocol

Membuat sebuah protocol, nantinya ViewController akan bergantung pada protocol ini (abstraction), bukan class NetworkService(Concrete Type) secara langsung.

2. Membuat class yang akan mengimplementasi protocol tersebut

Sekarang kode pada fungsi getAllGames pada class ViewController dapat dipindahkan ke dalam class GameImplementation ini.

3. Refactor kode pada class ViewController

Menambah sebuah dependency yaitu GameProtocol(Abstraction) tersebut dan menghandle completion dari fungsi getAllGames

Unit Test

Dengan membuat kode kita menjadi seperti ini, maka kita akan dapat melakukan test dengan mudah dan cepat.

1. Membuat Mock Object

Dengan membuat mock object, kita tidak perlu lagi melakukan test dengan real APICall. Kita dapat membuat data dummy kita sendiri

2. Write Unit Test

Karena ViewController bergantung dengan abstraction, kita dapat dengan mudah untuk mengganti dependency yang ada. Di sini kita tidak lagi menggunakan class GameImplementation, melainkan MockGameImplementation yang berisi data dummy kita.

Kesimpulan

Dengan membuat kode seperti ini, kita dapat membuat class/kode memiliki ruang untuk bernafas yaitu tidak bergantung pada class tertentu (Loose Coupling). Unit Test yang ditulis dapat dijalankan dengan cepat dan secara offline. Jika kita mengetest dengan memanggil API Call secara langsung, maka beberapa masalah yang dapat terjadi ialah:

  1. Masalah Internet yang sangat mempengaruhi kecepatan Unit Testing kita, sehingga hasil yang ada tidak konsisten. Apalagi jika kita berada di jangkauan yang tidak memiliki sinyal internet, maka kita tidak dapat melakuakan test. Test yang ada juga relative cepat yaitu hanya memerlukan waktu sekitar 0.1 detik, jika dibandingkan dengan ApiCall yang asli maka akan membutuhkan waktu beberapa detik.
  2. Kendala terhadap API Call limit pada beberapa API, sehingga akan menghambat proses development yang ada

Untuk melihat hasil akhir, Anda bisa checkout ke dalam branch Final. Semoga dapat memberikan insight baru dan dapat bermanfaat bagi teman-teman.

CategoriesProgrammingSwift

Reactive Programming dengan Combine Framework

Introduction

Selama ini mungkin kita menggunakan library seperti RxSwift untuk membuat aplikasi kita menjadi reactive. Nah pada tahun 2019, Apple sudah merilis framework bernama Combine. Kelebihan dari framework ini yang pertama ialah ini merupakan library native sehingga tidak perlu lagi melakukan install third library dan untuk syntaxnya sendiri cukup expresif sehingga mudah untuk dipelajari.

Sebelum deep dive lebih dalam mungkin kita perlu mengenal apa itu Reactive Programming?

Reactive Programming secara sederhana adalah ketika terjadi sebuah perubahan pada data, maka aplikasi kita akan update secara sendirinya tanpa kita suruh berulang-ulang. Contohnya pada excel ini ketika ketika melakukan perubahan pada angka, hasil pertambahan akan ter-update tanpa kita hitung secara manual lagi.

Continue reading
CategoriesProgramming

Fast Track Jadi Mobile Developer

Halo teman-teman! Terimakasih sudah membuka artikel ini 😊

So, artikel ini saya tulis sebagai media literasi dan dokumentasi dari event webinar yang diadakan oleh Kopertip Indonesia pada tanggal 14 Juni 2020.

Jadi, Bagaimana cara cepat untuk berkarir sebagai Mobile Developer? Sebelum menjawab hal tersebut, saya akan menjelaskan kenapa harus berkarir sebagai Mobile Developer. Saya menghighlight beberapa hal penting yang terdapat pada profesi ini, yaitu:

[SATU]: Trend Statistic

Saat ini total dari perusahaan terdaftar pada sensus ekonomi 2016 berjumlah lebih dari 23 juta perusahaan yang terdiri dari UMK dan UMB. Selain itu juga terjadi pertambahan sekitar lebih dari 2000 perusahaan baru setiap tahunya. Perubahan pola administrasi dan bisnis pada perusahaan juga akan berubah seiring berjalanya waktu. Untuk mengubah pola tersebut Indonesia memerlukan sumber daya manusia yang banyak.

Untuk memenuhi target tersebut, saat ini pemerintah dan berbagai perusahaan swasta menyelengarakan berbagai program untuk memenuhi kebutuhan mobile programmer di Indonesia. Diantara program tersebut adalah menyelenggarakan bootcamp scholarship, workshop, online course scholarship, dan berbagai program lain. Seperti contoh: Program Digitalent by Kominfo, IDCamp by Indoosat Ooredo, Sholarship Internship by Apple Developer Academy.

[DUA]: Salary

Payscale merangkum beberapa hasil survey terhadap gaji developer, berikut hasil survey untuk rata-rata gaji dari android developer dan iOS developer di Indonesia.

resource: www.payscale.com

Angka tersebut belum menjelaskan angka pasti nilai gaji di seluruh wilayah Indonesia. Teman-teman bisa mengecek lebih detail pada qr code yang telah saya cantumkan atau pada link berikut:

Survey Android Survey iOS

[TIGA]: Interest

Saya pribadi menerapkan konsep Ikigai yang berkaitan dengan beberapa aspek pada hidup. Hal tersebut mendukung saya agar dapat mendalami lebih dalam tentang apa yang saya suka, apa yang saya bisa, apa yang dunia butuhkan, dan apa yang dunia mau membayar untuk mendapatkan hal tersebut.

resource: Ikigai, Hector Gracia and Francesc Miralles

Saya mendapatkan bahwa Mobile Developer menjadi profesi yang menarik saya untuk lebih mendalaminya.

[EMPAT]: Learning Path

Selain beberapa hal diatas, ada juga hal penting yang dapat mempercepat proses kita untuk menjadi Mobile Developer yaitu mengikuti Learning Path atau Roadmap yang dibutuhkan. Dengan memiliki learning path tersebut akan mempermudah dan mempercepat kita untuk mempelajari hal-hal yang dibutuhkan di dunia industri sebagai Mobile Developer.

Berikut saya bagikan learning path yang juga saya gunakan dalam proses saya untuk menjadi Mobile Developer.

LEARNING PATH ANDROID by Ana Coimbra dan Diego Cabral

LEARNING PATH IOS by Bohdan Orlov

[TIPS]

Sebagai developer tentunya kita harus dapat memecahkan sebuah masalah yang kita alami, nah untuk memecahkan masalah tersebut kita memerlukan proses pembelajaran dan best-practice untuk menyelesaikanya. Berikut beberapa tips yang dapat teman-teman terapkan untuk mendukung teman-teman menjadi Mobile Developer:

  1. Be Stackoverflow buddy!
  2. Join Bootcamp or Courses
  3. Find match Community!
  4. Remember, 10.000 hours rules

Berikut saya bagikan beberapa bootcamp dan course yang dapat membantu teman-teman dalam belajar sebagai Mobile Developer:

Jika kalian membutuhkan bantuan untuk belajar menjadi Mobile Developer. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!

CategoriesInternet

Cara Mudah Buat Kelas Virtual

Halo teman-teman! Terimakasih sudah membuka artikel ini 😊

Jadi, artikel ini saya tujukan untuk teman-teman dalam bidang pendidikan yang pada masa-masa ini terpaksa harus melakukan kegiatan belajar secara online dengan para siswa atau peserta pelatihan. Ya, kita tahu sampai hari ini sudah lebih dari satu bulan semua lembaga pendidikan melakukan kegiatan belajar secara online.

So, How to do simple thing yang dapat membantu kalian untuk melakukan online learning.

Satu platform kelas online yang sangat saya rekomendasikan adalah Google Classroom. Saya juga menggunakan platform ini selama masa pandemi, well saya membantu menjadi admin untuk kelas virtual ibu saya (teacher). Ada sekitar 2 kelas dengan total 150 murid dan sangat mudah sekali untuk mengatur kegiatan kelasnya.

Jadi, apa yang membuat platform ini spesial?

  1. Pengembang platform ini adalah Google. Perusahaan raksasa yang banyak melakukan inovasi di bidang teknologi membuat platform ini sangat bisa untuk dipercaya.
  2. Sinkronisasi dengan semua produk Google seperti Google Form, Google Sheets, Youtube, Google Drive dan masih banyak lagi. Sehingga sangat mudah untuk melakukan banyak hal disini.
  3. Bisa membuat Topic yang dapat disesuaikan dengan Bab bahasan seperti kelas fisik biasanya.
  4. Bisa melakukan pengumpulan dan penilaian tugas secara online
  5. Yang paling penting, hasil tugas siswa dapat direkap secara otomatis dengan output file excell.

Dengan berbagai kemudahan tersebut, ternyata cara menggunakan nya cukup mudah sekali. Silakan ikuti step-step dibawah ini.

[SATU]: Pastikan kalian terhubung dengan Internet dengan kecepatan yang memadai. Why? Karena sebagai guru atau fasilitator tentunya kalian harus tanggap dengan kondisi kelas.

[DUA]: Buka link https: classroom.google.com di browser kalian. Halaman ini adalah wajib kalian buka jika ingin membuka platform Google Classroom. Jangan lupa untuk Sign In dengan akun Google kalian.

Jika kalian baru pertama membuka halaman ini maka akan muncul halaman seperti ini. Pilih ‘Lanjutkan’.

[TIGA]: *Opsional. Silakan download aplikasi Google Classroom di smartphone kalian. Hal ini ditujukan agar kalian dapat dengan mudah memonitor kondisi kelas ketika sedang melakukan aktivitas lain.

[EMPAT]: Pilih ikon ‘+’ untuk membuat kelas kalian. Lalu pilih Create Class.

[LIMA]: Masukan identitas kelas yang akan kalian buat.

Ada beberapa form yang dapat kalian isi sebagai identitas kelas kalian. Berikut beberapa informasi terkait form yang perlu kalian isikan

  • Class Name: bagian ini akan menjadi judul kelas kalian. Jadi pastikan cukup deskriptif. Bisa diisi dengan nama lembaga kalian.
  • Section: bagian ini akan menjadi informasi yang muncul dibawah judul kelas kalian. Kalian bisa mengisi dengan nama kelas, guru, atau tahun ajar.
  • Subject: bagian ini menjadi informasi mata pelajaran atau mata kuliah terkait dengan kelas.
  • Room: bagian ini menjadi informasi nama ruang kelas seperti kelas fisik pada biasanya.

[ENAM]: Kalian akan mendapatkan tampilan kelas kalian seperti ini.

Ada beberapa tab yang membedakan fungsi-fungsi dari platform ini:

  • Stream / Forum:

Tab ini berisi informasi kelas dan forum. Kalian dapat post informasi terkait kelas seperti pengumuman penggunaan kelas, atau diskusi terbuka. Dan siswa dapat berkomentar pada postingan yang kalian buat.

  • Classwork / Tugas Kelas

Tab ini berisi halaman tugas yang harus dilakukan siswa. Kalian dapat memberikan tugas seperti quiz dengan menggunakan Google Forms, atau tugas membaca buku dengan membagikan file ebook yang kalian pilih.

  • People / Anggota

Tab ini berisi informasi penghuni kelas. Kalian dapat memonitor siapa saja yang memasuki kelas kalian. Kalian juga bisa menambahkan guru lain pada kelas ini.

  • Grades / Nilai

Tab ini berisi hasil nilai dari tugas yang siswa kalian kumpulkan.

[TUJUH]: Membuat Kelas!

Silakan Pilih ‘Create’ untuk membuat tugas dan silakan pilih tipe tugas yang akan kalian buat. Google menyediakan beberapa templates yang akan membantu kalian untuk membuat tugas.

  • Assignment: Bagian ini untuk membuat tugas secara umum
  • Quiz Asignment: Bagian ini untuk membuat tugas dengan template quiz
  • Question: Bagian ini untuk membuat tugas dengan model kalian membagikan satu pertanyaan lalu siswa dapat menjawabnya
  • Material: Bagian ini untuk membuat materi bahasan. Bisa berupa informasi tentang bahasan suatu bab / chapter. Kalian bisa menambahkan beberapa link untuk referensi siswa
  • Reuse Post: Bagian ini untuk menggunakan post yang sebelumnya sudah pernah kalian post.
  • Topic: Bagian ini untuk membuat pemisah dari setiap bab. Kalian bisa menggunakanya untuk memberi nama bab atau nama tema dari tugas yang akan kalian buat.

[DELAPAN]: Pilih ‘Assignment’, untuk membuat tugas general.

Ada beberapa bagian yang perlu kalian isikan:

  • Title: Kalian dapat mengisikan dengan nama tugas.
  • Instruction: Kalian dapat mengisikan dengan instruksi dari tugas yang kalian buat.
  • Add: Kalian dapat menambahkan file pendukung lain seperti file video youtube, file drive, file attachment, atau link.
  • Create: Kalian dapat menambahkan file pendukung seperti Google Forms, Google Sheets, Google Docs, dan lainya.
  • For: Ditujukan untuk kelas apa dan untuk siapa saja. Kalian bisa menyesuaikan untuk kelas yang kalian pilih dan semua siswa.
  • Points: Nilai maksimal yang dapat didapatkan siswa.
  • Due: Waktu terakhir pengumpulan tugas siswa.
  • Topic: Jika kalian ingin menambahkan post untuk pada topik terpilih.
  • Rubrik: Kalian dapat menambahkan bagaimana cara tugas kalian dinilai.

[SEMBILAN]: Jika kalian selesai membuat tugas maka pilih ‘Assign’. Jika kalian ingin tugas akan di post pada waktu tertentu maka kalian dapat memilih ‘Schedule’, atau memilih ‘Save Draft’ untuk menyimpan file tugas yang telah dibuat untuk diedit di lain waktu.

[SEPULUH]: Tugas kalian akan terposting pada halaman ‘Classwork’ dan akan memberi notifikasi kepada semua siswa.

Dari tugas yang sudah kalian buat nantinya akan dapat kalian nilai secara online juga, begitu juga rekap nilainya juga.

So, I really recommend you guys, teachers, mentors, trainers, facilitators to use this platform. I believe it will help you so much!

Jika kalian membutuhkan bantuan untuk pembuatan kelas virtual. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!
CategoriesProgramming

Bikin HTTP Request lebih cepat dengan Generic Class!

Halo teman-teman! Saya menulis artikel ini untuk membantu developer iOS lain yang pada artikel lalu sempat bertanya langsung ke saya cara membuat Generic Class untuk HTTP Request 😉.

Sedikit Disclaimer❗️, Generic Class bukan hanya ditujukan untuk membuat HTTP Request / Networking saja. Tapi bisa untuk semua fungsi dengan input yang generic/umum. Silakan baca dokumentasi lebih lengkap disini.

Generics — The Swift Programming Language (Swift 5.2)

Networking sudah menjadi sesuatu yang paling sering dilakukan pada Mobile Apps, khususnya pada iOS Developement. Ya, you know right gimana Mobile Apps tanpa ada networking.

Menggunakan Generic Class ini gambaran umumnya adalah membuat box yang dapat menyimpan dan menjaga semua inputnya. Dengan batasan sesuai dengan ukuran box nya dan tidak merusak komposisi box. Bagaimana? Sedikit lebih jelas bukan.

So, Let’s see how the code works!

Untuk networking akan menggunakan Alamofire😁, untuk kalian pengguna Moya atau URLSession bisa menyesuaikan .

  • Pada dasarnya ini mirip class dengan function seperti biasa

Yang membuat berbeda adalah simbol <T>. simbol tersebut adalah simbol generic yang mengindikasikan bahwa fungsi tersebut merupakan fungsi generic.

  • Selanjutnya, tuliskan kode request seperti biasa
  • And yes! fungsi generic kita selesai! sangat mudah kan? Eits, jangan lupa untuk merubah fungsi menjadi static function agar fungsi dapat diakses tanpa pembuatan objek kelas terlebih dahulu.
  • Bagaimana cara menggunakan kelas ini? cara menggunakan nya cukup mudah

Yap! Hanya seperti itu cara menggunakan nya. Kalian tidak perlu baris kode untuk setiap kali request. Dengan menggunakan Generic Class untuk networking, dapat memangkas kode request hingga 30% . Tentunya sangat membantu untuk proses development kalian.

Tapi, jika kalian membutuhkan bantuan untuk pembuatan fungsinya. Feel free untuk menghubungi saya di @nandamochammad

That's All! See you on the next line!
CategoriesProgramming

Daftar Akun Apple Developer? Mudah!

Halo teman-teman, terimakasih telah membuka artikel ini. Well, kenapa saya menulis cara mendaftar akun Apple Developer ini karena saya baru memperbarui akun developer saya dan selain itu akun developer adalah syarat sah agar kita bisa belajar Apple Development lebih deep lagi 🔥.

Mungkin banyak yang bertanya, emang kenapa harus mendaftar akun developer? Berbeda dengan pemrograman mobile sebelah yang semua fitur developmentnya dapat diakses, Apple sangat selektif untuk aplikasi yang di publish begitu juga dengan developernya 😎. Dengan akun developer kemudahan yang paling bisa dengan mudah rasakan selain dapat mempublish di Apps Store adalah kebebasan akses di semua development support apple seperti notification, CloudKit, CoreML, ARKit, HealthKit, SiriKit, dan semua development stuff milik apple. Sehingga dalam satu environment kita cukup menggunakan produk apple saja.

Jadi, bagaimana cara mendaftar nya?

Oh iya, saya akan menuliskan cara mendaftar untuk Individual Account ya, bukan untuk company 😉 hanya membutuhkan kartu debit/kredit (untuk payment) dan kartu identitas (hanya jika diminta)

  • [SATU]: Silakan buka registration page pada halaman ini: https://developer.apple.com/enroll. Jika kamu sudah memiliki Apple ID silakan langsung Sign In seperti dibawah ini
  • [DUA]: Periksa Agreement Apple, centang kotak yang mengonfirmasi bahwa kalian telah membacanya dan klik ‘Submit‘.
  • [TIGA]: Konfirmasikan bahwa semua informasi yang kalian masukkan sudah benar (email, nama, lokasi), lalu pilih entitas. Ingat! Kita mendaftar untuk Individual Account
  • [EMPAT]: Isi semua informasi yang diminta, biasanya membutuhkan waktu sekitar 10-15 menit untuk mengisinya, jadi yang sabar ya!
  • [LIMA]: Jangan lupa untuk membaca License Agreement pada halaman paling akhir! Jika setuju, jangan lupa mencentang box kecil dibawah License Agreement nya.
  • [ENAM]: Pilih “Purchase” untuk membayar akun developer kalian.

Perlu diketahui akun ini bersifat subscription per tahun.

Sehingga jangan salah untuk harga $99 tersebut harus kalian bayar kan setiap tahun ya. Jangan khawatir ada Auto Renewal jika kalian ingin untuk otomatis pembayaran subscriptionnya.

So, that’s the steps! Cukup mudah kan?

Tapi, jika kalian membutuhkan bantuan untuk pendaftaran akun developer. Feel free untuk menghubungi saya di media sosial saya di @nandamochammad

That's All! See you on the next line!

CategoriesProgramming

Coding IOS Lebih Cepat Dari Biasanya!

Selamat datang teman – teman, artikel ini merupakan materi sharing dari event KMM Webinar yang dilaksanakan pada tanggal 25 April 2020. Selamat membaca 🙂

Jadi, sesuai dengan judul cara coding iOS agar lebih cepat dari biasanya adalah pastinya dengan sudah menyiapkan kode-kode yang mungkin akan dipakai. Dalam software development kita mengenal Library atau Dependency atau Third Party.

Berikut beberapa library yang bisa membantu kita mempercepat proses develoment iOS:

1. Alamofire

Alamofire ini menyiapkan banyak function yang bisa digunakan untuk mempercepat proses development teman – teman. Diantaranya seperti pada dokumentasi diatas, function yang ditawarkan meliputi:

  • URL / JSON Parameter Encoding
  •  Upload File / Data / Stream / MultipartFormData
  •  Download File using Request or Resume Data

Untuk Alamofire yang berfungsi sebagai HTTP Request, secara native Swift sudah memiliki fitur untuk HTTP Request, yaitu URLSession

2. SwiftyJSON

SwiftyJSON digunakan untuk handle JSON result dari method request. Swifty JSON dapat di implement pada variasi library ios seperti Cocoapods, Carthage, dan Swift Package Manager. Seperti pada dokumentasi, function yang bisa digunakan pada SwiftyJSON meliputi Merge JSON, Looping, dan Literal Convertibles.

Untuk SwiftyJSON yang berfungsi sebagai JSON Handling, secara native Swift sudah memiliki fitur serupa yaitu JSONSerialization, yang dapat digunakan sebagai media convert untuk JSON model tujuan.

3. SDWebImage

SDWebImage merupakan library yang dapat digunakan untuk request image secara asyncronous. Penggunaan SDWebImage lebih sering diterapkan pada request image pada link image dari hasil request. Seperti pada Carrousel, Katalog, atau List.

4. MBProgressHUD

MBProgressHUD banyak dipakai untuk menggantikan activity indicator yang sudah ada natively pada Swift. Hal itu dikarenakan MBProgressHUD memiliki banyak varian progress yang interaktif dan deskriptif, akan tetapi masih sesuai dengan Human Interface Guidelines (HIG) Apple.

5. SnapKit

SnapKit merupakan cara ringkas untuk membuat programmatically autolayout pada iOS. Keunggulan yang sangat terlihat adalah keringkasan pada baris kode yang dibutuhkan untuk membuat layout pada satu objek.

Pada Webinar lalu, juga dilakukan live coding untuk pembuatan reusable function untuk generic network request, silakan di cek pada git yang ada dibawah ini

Link Demo Project : https://github.com/NandaMocha/LibraryDemo

Tentunya masih banyak library lain yang dapat digunakan untuk mempercepat iOS Development. Seperti FBLoginSDK, Firebase, dan GoogleLoginSDK.

So, because of that, saya invite teman – teman juga untuk berbagi library yang sering dipakai dengan comment pada artikel ini nama library yang dipakai, link dokumentasi, dan tujuan implementasinya. Hopefully, artikel ini akan bermanfaat bagi developer iOS lain.

Terimakasih all 🙂