Background App Refresh di iOS

Berbicara mengenai fitur multitasking di iOS, rasanya tidak lengkap kalau kita tidak membahas Background App Refresh, sebuah fitur tambahan untuk melengkapi fungsi multitasking yang mulai diperkenalkan sejak iOS 7. Karena sebelumnya saya sudah bahas soal multitasking pada iOS, maka kali ini saya akan lanjut membahas soal Background App Refresh. Tapi sebelum itu, mari sedikit flashback soal fitur multitasking pada iOS.

iOS app state

Fitur multitasking pada iOS pertama kali muncul pada iOS 4, yaitu ketika Steve Jobs resmi mengubah nama iPhone OS menjadi iOS. Namun pada saat itu fitur multitasking di iOS 4 masih sangat terbatas, hanya aplikasi tertentu saja yang bisa berjalan di background (latar belakang), yaitu aplikasi-aplikasi yang menggunakan framework yang diizinkan Apple. Sejak iOS 7, Apple mulai melonggarkan aturannya dan juga mengubah antarmuka dari fitur multitasking dan interaksi pengguna pada aplikasi yang berjalan.

iOS 7 multitasking

Pada iOS 7 (dan iOS 8) tampilan multitasking atau cara berpindah dari aplikasi ke aplikasi ditampilkan dalam bentuk kartu. Kalau dulunya pra-iOS7 pengguna berpindah aplikasi dari ikon-ikon yang muncul pada “multitasking bar” atau “recently used apps“, pada iOS 7 pengguna diberikan tampilan multitasking baru, yaitu preview dari aplikasi yang sedang berjalan (foreground) atau baru saja ditinggalkan (background). Pengguna bisa menyapukan jari ke kiri/kanan untuk menelusuri daftar aplikasi, lalu men-tap preview dari aplikasi tersebut, baik pada area “kartu” ataupun ikon yang terdapat di bawahnya untuk berpindah ke aplikasi tersebut. Selain itu pengguna juga dapat menutup aplikasi yang berjalan dengan menggesernya ke atas.

Sedangkan di iOS 9, tampilan multitasking atau daftar aplikasi berjalan menjadi sedikit berubah. Tampilan kartu pada iOS 9 mengadopsi model kartu bertumpuk, dengan ikon dan nama aplikasi di atasnya.

Pada iPhone, perubahan yang paling terasa bagi pengguna mungkin hanya dari segi tampilan saja, tetapi pada iPad ada fitur baru yang mendukung aktivitas multitasking, yaitu Slide Over dan Split View.

Slide Over memungkinkan pengguna iPad untuk membuka dua aplikasi secara bersamaan tanpa perlu meninggalkan atau menutup aplikasi pertama. Dari sisi tampilan, layar untuk aplikasi kedua lebih kecil dibanding aplikasi pertama atau aplikasi utama. Sedangkan Split View, adalah fitur untuk menjalankan dua aplikasi secara bersamaan, saling bersebelahan. Dengan kata lain, Split View adalah bentuk dari “multi window” alias kemampuan untuk menjalankan dua jendela aplikasi secara bersamaan. Dua aplikasi yang berjalan dipisahkan oleh divider atau pembatas. Kira-kira Split View ini agak mirip dengan “traditional multitasking” pada sistem operasi desktop, bedanya Split View ini hanya terbatas untuk 2 aplikasi saja, side-to-side.

Background App Refresh

iOS Background App Refresh

Background App Refresh (BAR) adalah fitur penunjang multitasking yang mulai diperkenalkan pada iOS 7. BAR memungkinkan aplikasi dapat memperbarui kontennya di latar belakang tanpa perlu dijalankan.

Fitur Background App Refresh bisa diakses dari Settings > General > Background App Refresh.

Cara kerja Background App Refresh

Untuk lebih memahami apa itu BAR, dan apa pengaruh BAR terhadap iOS secara keseluruhan, berikut ini adalah penjelasan Apple soal BAR, sebagai rujukan (sebelum direvisi):

Some apps will run for a short period of time before they’re set to a suspended state. This means they’re not actively in use, open, or taking up system resources. When you return to these apps, they’ll open instantly.

Some apps can continue to run in the background. You can allow these apps to refresh themselves by turning on Background App Refresh. This settings lets apps check for new content and download updates, or retrieve updated content in the background when they receive push notifications.

To save battery, apps running in the background refresh at certain times, like when your device is connected to Wi-Fi, plugged into a power source, or being actively used. iOS learns patterns based on how you use your device and tries to predict when an app running in the background should refresh. It also learns when the device is typically inactive, like at night, to help keep apps from refreshing when you’re not using your device. Apps can also schedule background refreshing based on your location.

If you turn off Background App Refresh, some background activity might still occur.

Jadi untuk meringkas penjelasan Apple di atas, pada dasarnya BAR adalah fitur cerdas yang akan membuat pemakaian aplikasi semakin efisien, terutama ketika aplikasi tersebut sedang tidak aktif atau berada pada kondisi suspended. BAR memungkinkan aplikasi berjalan di latar belakang, tanpa interaksi pengguna, dan kemudian memperbarui informasi atau kontennya sehingga ketika pengguna menjalankannya kembali pengguna dapat menikmati informasi atau konten yang terbaru, secara instan.

Aplikasi yang aktif berjalan di latar belakang (BAR) ini bersifat sementara dan pada waktu-waktu tertentu saja, dan akan kembali non-aktif alias freeze/suspended ketika proses update konten selesai.

Keuntungan yang diperolah adalah konten dari aplikasi tetap terbarui tetapi tidak menggunakan banyak sumber daya (resources) seperti RAM dan CPU yang bisa berefek ke penggunaan baterai. Selain itu pengguna tidak perlu lagi menjalankan aplikasi-aplikasi tertentu hanya untuk menunggu sampai informasi/konten dari aplikasi tersebut ter-update, karena BAR akan membuat aplikasi tetap “segar” walaupun ditinggalkan di latar belakang.

BAR juga bisa mempelajari kebiasaan pengguna terhadap aplikasi-aplikasi yang sering dijalankan. BAR akan mempelajari pola penggunaan suatu aplikasi, dan memprediksi kapan waktu terbaik untuk me-refresh konten di latar belakang sesuai dengan kebiasaan pengguna. Sebagai contoh, pada saat malam hari fitur BAR akan lebih sedikit aktif karena pada saat itu pengguna akan jarang menjalankan aplikasi, karena iOS mempelajari bahwa saat itu adalah waktu istirahat pengguna.

Saya memperkirakan kalau pada awalnya semua aplikasi “berhak” atas fitur BAR sejak pertama kali dijalankan. Bisa juga dikatakan kalau pada awalnya semua aplikasi mendapat “porsi” yang sama.

Pertama kali sejak sebuah aplikasi dijalankan (foreground) dan dioper ke latar belakang (background), iOS akan memulai proses penjadwalan untuk menjalankan proses pengambilan informasi (fetching). Proses penjadwalan inilah yang dihitung berdasarkan pola penggunaan sebuah aplikasi. Seiring waktu dan penggunaan yang tentu saja berbeda-beda, iOS akan mulai memberikan prioritas. Misalnya, sejak di-install ada aplikasi yang mulai jarang digunakan dan ada aplikasi yang lebih sering dijalankan dibanding yang lainnya. Aplikasi yang lebih sering dijalankan ini akan mendapat prioritas yang lebih tinggi dibanding yang lain.

BAR tidak memiliki periode aktif yang tetap, misalnya setiap 1 jam, setiap 30 menit, setiap 10 menit, dst. Cara seperti itu tidaklah efisien. BAR aktif dengan menyesuaikan terhadap pola penggunaan pengguna.

Orang yang rajin mengecek Facebook dan Twitter saat bangun pagi, misalnya, akan meningkatkan prioritas kedua aplikasi tersebut pada waktu pagi, yang artinya di antara semua aplikasi yang ter-install (dan BAR-nya aktif) Facebook dan Twitter adalah aplikasi “pengusasa pagi hari”.

Pada tahap ini semua aplikasi tidak lagi dianggap “setara” oleh sistem.

Di samping itu, ketersediaan koneksi Internet yang stabil, jaringan 4G / Wi-Fi yang memadai, dan sisa baterai juga jadi faktor yang mempengaruhi performa BAR. Perangkat dengan koneksi Internet dari Wi-Fi dan perangkat yang sedang di-charge adalah kondisi paling ideal untuk fitur BAR. Dibandingkan pada perangkat yang jaringan selulernya terbatas, sinyal lemah dan putus-putus, dan baterainya lemah. Kalau koneksi Internet utama Anda hanya bergantung pada sinyal seluler saja, dan kebetulan Anda tinggal di daerah yang penerimaan sinyalnya tidak terlalu baik maka mungkin fitur BAR tidak akan begitu terasa manfaatnya karena proses pengambilan informasi dari BAR tidak akan optimal.

Aplikasi-aplikasi yang memanfaatkan Background App Refresh

Ada banyak aplikasi dari berbagai kategori yang memanfaatkan fitur Background App Refresh (BAR). Namun sebenarnya fitur BAR ini baru bermanfaat bagi pengguna kalau si pengembang aplikasi sudah memprogramkan BAR pada aplikasi buatannya (dengan memanfaatkan API Background Fetch).

Tidak semua aplikasi yang ada di App Store secara otomatis bisa langsung mengambil manfaat dari BAR begitu iOS 7 diluncurkan sebelum aplikasinya diperbarui terlebih dahulu oleh si pengembang/pembuat aplikasi. Akan tetapi saya rasa sejak artikel ini ditulis, sebagian besar atau bahkan semua aplikasi di App Store sudah didesain untuk memanfaatkan kemampuan BAR. Pengguna juga bisa memastikan hal ini dengan melihat langsung pada Settings > General > Background App Refresh.

Namun pada umumnya, jenis-jenis aplikasi yang memanfaatkan BAR adalah aplikasi yang terhubung atau bergantung pada koneksi internet, itu sudah jelas.

Beberapa contoh jenis aplikasi yang memanfaatkan BAR untuk mengambil informasi di latar belakang:

  • Aplikasi media sosial, seperti Facebook atau Twitter misalnya, bisa memperbarui informasi status atau posts di latar belakang.
  • Aplikasi cuaca, untuk memperbarui informasi cuaca yang akurat, peta awan/hujan, dll.
  • Aplikasi-aplikasi email seperti Gmail bisa menerima email dan konten email tersebut.
  • Aplikasi berita atau pembaca berita bisa memperbarui informasi berita dan headline terbaru.
  • Aplikasi podcast bisa men-download episode terbaru secara otomatis ketika diatur demikian (dan dalam koneksi Wi-Fi).
  • Aplikasi-aplikasi pelacakan penggunaan data, memanfaatkan BAR untuk menjaga keakuratan penghitungan.
  • Aplikasi fitnes, memanfaatkan BAR untuk penghitungan jarak dan waktu yang lebih akurat.
  • Selain itu, aplikasi berbasis peta atau GPS seperti Waze misalnya bisa juga memperbarui informasi arahnya terutama pada saat mengemudi dengan bantuan BAR, tapi khusus untuk aplikasi jenis ini proses update adalah kombinasi dari Background App Refresh dan Location Service (Layanan Lokasi).

Selain itu yang perlu dicatat adalah dengan Background Fetch, ada aturan atau limitasi yang harus dipatuhi. Yaitu, aplikasi tidak dapat berjalan secara terus menerus di background (pada mode BAR aktif). Aplikasi hanya diberikan waktu selama 30 detik untuk menjalankan proses fetching (pengambilan informasi) dan memperbarui semua data-data yang diperlukan sebelum aplikasi tersebut ditidurkan kembali oleh sistem. Kalau suatu aplikasi membutuhkan waktu yang terlalu lama untuk menyelesaikan semua proses itu, maka kemungkinan besar sistem akan menghentikan proses fetching-nya di tengah jalan.

Efek Background App Refresh terhadap baterai

Fungsi utama dari BAR sebenarnya adalah untuk menunjang aktivitas multitasking pengguna, membantu pengguna tetap bisa mendapatkan informasi dan konten terbaru dari suatu aplikasi meskipun aplikasi tersebut tidak berjalan di depan (foreground). Dengan begitu ketika pengguna menjalankan aplikasi A misalnya, aplikasi B, C, dan D bisa tetap terbarukan kontennya walaupun pengguna masih aktif di aplikasi A saja, dan belum membuka aplikasi B, C, ataupun D. Semua proses itu terjadi secara otomatis untuk aplikasi yang berada di background.

Adapun cara Apple agar proses BAR ini tidak tidak terlalu memberatkan adalah dengan hanya mengizinkan BAR aktif sesekali saja, tidak sepanjang waktu. Akan tetapi, di saat yang bersamaan Apple juga menambahkan lapisan kecerdasan pada BAR untuk mendeteksi aplikasi yang paling sering digunakan.

Apple mendesain BAR untuk mampu mendeteksi pola penggunaan suatu aplikasi oleh pengguna. Semakin sering suatu aplikasi digunakan, semakin sering BAR aktif. Aplikasi yang paling sering dijalankan akan memiliki “keistimewaan” dan akan dizinkan oleh iOS untuk aktif lebih sering dibanding yang lain. Kemampuan inilah yang terkadang menjadi kendala dan malah bisa berakibat menguras baterai. Dan memang, kalau Anda melakukan pencarian di Google, sebagian besar hasilnya akan menunjukkan bahwa “cara untuk menghemat baterai” adalah dengan menonaktifkan fitur BAR. Ini memberikan kesan bahwa BAR adalah fitur yang gagal. Namun sebenarnya tidak seperti itu. Kalau semua aplikasi mengimplementasikan BAR dengan benar dan mengikuti aturan dan kondisi yang ditetapkan Apple, semua aplikasi yang memanfaatkan BAR tidak akan menguras baterai.

Penggunaan baterai mungkin akan sedikit meningkat pada beberapa aplikasi, tapi tujuan utama dari BAR adalah Apple ingin membuat proses multitasking lebih efisien bagi pengguna. Fitur penjadwalan dan prediksi pada iOS seharusnya menjadi metode yang lebih baik dalam mengambil informasi dibanding membangkitkan masing-masing aplikasi dan menunggu sampai informasi dan kontennya diperbarui. Perbedaan utama dari kedua metode ini ada pada waktu/jadwal dan prioritas.

Yang paling utama adalah kalau Anda merasa baterai iPhone Anda terkuras, BAR adalah fitur terakhir yang harus disalahkan. Kenapa? Karena ada banyak faktor-faktor yang mempengaruhi baterai dan BAR. Misalnya:

  • Kondisi baterai secara umum, apakah memang masih normal atau sudah menurun?
  • Jumlah aplikasi yang terpasang, serta jenis aplikasi tersebut. Apakah sebagian besar aplikasi butuh koneksi Internet?
  • Intensitas penggunaan. Ini sudah jelas. Semakin sering digunakan, semakin cepat baterainya habis.
  • Bagaimana penerimaan sinyal seluler? Apa sinyalnya penuh, dan stabil?
  • Sinyalnya stabil tapi bagaimana dengan kualitas Internetnya, apa lancar-lancar saja?
  • Bagaimana dengan tampilan atau visual nya? Animasinya aktif? Kecerahannya terlalu tinggi?
  • Sering putar video, dengar musik, atau main game HD?

Kualitas sinyal yang buruk saja sudah cukup untuk menghambat proses BAR, apalagi kalau ditambah faktor-faktor lainnya.

Mengeluarkan atau menutup aplikasi dari multitasking

Aplikasi yang dikeluarkan atau ditutup dari app switcher (multitasking) tidak akan mendapatkan keuntungan dari BAR. Karena aplikasi tersebut tidak lagi berjalan di background atau dalam kondisi suspended.

If you want suspended apps to check for new content, go to Settings > General > Background App Refresh and turn on Background App Refresh. If you quit an app from the app switcher, it might not be able to run or check for new content before you open it again.

Aplikasi yang ditutup secara manual oleh pengguna adalah layaknya perintah “saya tidak ingin aplikasi ini melakukan apa-apa” bagi iOS. Jadi, kalau Anda ingin suatu aplikasi tetap ter-update, jangan tutup aplikasi tersebut dari background (dari multitasking bar). Justru pengguna tidak disarankan untuk menutup aplikasi dari multitasking karena aplikasi yang berjalan di background berada pada mode stand by yang lebih efisien dibanding menutup dan memuat aplikasi kembali ke RAM.

Lalu bagaimana dengan notifikasi?

Sebenarnya ini tergantung dari implementasi BAR pada tiap-tiap aplikasi. Tapi pada umumnya BAR tidak akan dan tidak seharusnya menggangu penerimaan notifikasi. Fitur BAR yang dinonaktifkan pada suatu aplikasi akan tetap bisa menerima notifikasi secara normal seperti biasanya.

Notifikasi adalah cara sebuah aplikasi baik yang dalam keadaan suspended, di background, ataupun yang tidak berjalan sama sekali untuk mendapatkan perhatian pengguna.

Aplikasi tetap bisa memanfaatkan notifikasi lokal untuk menampilkan banner/peringatan, memainkan suara, memunculkan badge/label pada ikon aplikasi ataupun kombinasi ketiganya. Sebagai contoh, aplikasi alarm mungkin hanya perlu menggunakan notifikasi lokal untuk memainkan suara alarm dan menampilkan pesan atau peringatan untuk menonaktifkan alarm.

Untuk notifikasi yang “online” (push notification), notifikasi dari sebuah aplikasi dikirim langsung dari server pusat notifikasi Apple, yaitu Apple Push Notification service (APNs).

iOS Developer Library:

Apple Push Notification service (APNs) is the centerpiece of the remote notifications feature. It is a robust and highly efficient service for propagating information to iOS (and, indirectly, watchOS), tvOS, and OS X devices. Each device establishes an accredited and encrypted IP connection with APNs and receives notifications over this persistent connection. If a notification for an app arrives when that app is not running, the device alerts the user that the app has data waiting for it.

Agar push notification bisa diterima pengguna, aplikasi harus berhubungan dengan APNS, dan itu tidak dipengaruhi apakah aplikasi tersebut sedang berjalan (foreground) atau suspended. Push notification akan sampai ke pengguna begitu ada pesan/perintah yang memang dikirim dari server Apple. Push notification tidak perlu menunggu sampai proses fetching di background selesai. Push notification tidak berhubungan langsung dengan BAR.

Notifikasi hanya menampilkan notifikasi saja, sedangkan BAR menyediakan kontennya.

Soal notifikasi dan hubungannya dengan BAR, Anda bisa baca di sini.

Mengaktifkan atau menonaktifkan fitur Background App Refresh

Walau BAR bertujuan untuk menunjang aktivitas multitasking pengguna, tapi pengguna tetap diberi pilihan untuk mengaktifkan atau menonaktifkannya. Konfigurasi untuk BAR bisa ditemukan di Settings > General > Background App Refresh. Pengguna bisa menonaktifkannya secara keseluruhan ataupun per aplikasi saja.

Saran saya, Anda tidak perlu mengaktifkan BAR untuk semua aplikasi, cukup aplikasi yang paling sering digunakan dan memang bermanfaat bagi aktivitas harian Anda.

Pada iOS 9, Apple memperkenalkan fitur Low Power Mode (General > Battery):

Low Power Mode is an easy way to extend the battery life of your iPhone when it starts to get low. Your iPhone lets you know when your battery level goes down to 20%, and again at 10%, and lets you turn on Low Power Mode with one tap. Or you can enable it by going to Settings > Battery. Low Power Mode reduces display brightness, optimizes device performance, and minimizes system animations. Apps including Mail will not download content in the background, and features like AirDrop, iCloud sync, and Continuity will be disabled.

Jadi, Low Power Mode (LPM) ini adalah fitur untuk memperpanjang penggunaan baterai yang aktif secara otomatis ketika baterai lemah. Pada saat aktif, LPM akan mengurangi tingkat kecerahan layar, mengurangi efek visual seperti animasi, bayangan, dll, mempercepat redupnya layar dan juga menonaktifkan fitur BAR untuk sementara waktu sampai baterai diisi kembali.

Jadi, ya, BAR memang menjadi salah satu fitur yang dinonaktifkan saat LPM aktif, tapi bukan berarti kalau BAR itu bikin boros, tapi memang pada saat baterai lemah semua fitur yang tidak terlalu penting harus ditangguhkan untuk memperpanjang masa pakai baterai.