Banyak yang mengira kalau aktif tidaknya fitur Background App Refresh (BAR) akan berpengaruh terhadap kelancaran notifikasi di iOS.

Tidak jarang saat ada pengguna iPhone yang mengeluhkan masalah seputar notifikasi misalnya terlambat masuk, akan ada pengguna lain yang merespon dengan bertanya soal fitur BAR, “background app refresh nya aktif gak?”, yang mengimplikasikan kalau masalah notifikasi tersebut ada disebabkan gara-gara BAR-nya dinonaktifkan.

Soal notifikasi atau push notification ini saya sudah bahas sedikit pada artikel Background App Refresh, dan sekarang saya mau bahas sedikit lagi sesuai dengan apa yang saya pahami dan saya teliti :) Dan semoga ini bermanfaat.

Background App Refresh

BAR merupakan bagian dari fitur multitasking iOS yang mulai diperkenalkan pada iOS 7. Sesuai dengan namanya fitur ini memungkinkan informasi dan konten dari aplikasi tetap update meskipun berada di background atau latar belakang. Kalau dulunya pra iOS 7 fitur multitasking di iOS biasa-biasa saja, maka dengan BAR fitur multitasking iOS jadi lebih true smart.

Dengan BAR, iOS akan mempelajari kebiasaan pengguna, aplikasi-aplikasi mana saja yang paling sering digunakan dan pada waktu kapan. iOS akan mempelajari pola tersebut dan menjalankan proses refresh informasi di latar belakang sesuai kebiasaan pengguna. Proses atau aktivitas BAR ini bersifat sementara saja, bukan sepanjang waktu, dan tidak memiliki periode yang tetap (misalnya refresh setiap 1 jam, setiap 30 menit, 10 menit, dst). Dengan begitu informasi atau konten aplikasi dapat disajikan ke pengguna secara instan, tetapi tetap hemat resource (selengkapnya di sini).

Push Notification

Notifikasi adalah cara iOS/aplikasi untuk memberitahukan informasi atau event dan juga mendapatkan perhatian dari pengguna. Notifikasi yang muncul bisa berupa banner, peringatan, suara dan badge. Notifikasi bisa muncul karena:

  • Ada pesan baru yang sampai
  • Ada acara terbaru
  • Data terbaru siap untuk didownload
  • Adanya perubahan status

Ada dua jenis notifikasi, yaitu:

  1. silent notification
  2. user notification

Silent notification tidak tampak pada pengguna karena sifatnya yang “silent”. Tidak ada antarmuka atau getaran atau tanda apapun untuk silent notification. Silent notification digunakan sebagai sinyal, atau komunikasi server ke aplikasi. Silent notification bukan digunakan untuk memberitahukan pengguna.

User notification adalah notifikasi yang nampak dan ditujukan bagi user/pengguna. User notification terbagi dua jenis lagi yaitu Local Notifications dan Remote Notifications (push notifications).

iOS Remote notifications

A local notification is scheduled by an app and delivered by iOS on the same device, regardless of whether the app is currently running in the foreground. For example, a calendar or to-do app can schedule a local notification to alert people of an upcoming meeting or due date.

A remote notification (also called a push notification) is sent by an app’s remote server to the Apple Push Notification service, which pushes the notification to all devices that have the app installed. For example, a game that users can play against remote opponents can update all players with the latest move.

Local notification sifatnya lokal, tersimpan di perangkat pengguna, bukan di server/internet. Local notification biasanya muncul dari aplikasi-aplikasi berbasis waktu atau lokasi, atau yang tugasnya untuk memperingatkan pengguna seperti alarm, kalener, pengingat, to-do list dan semacamnya. Notifikasi lokal yang muncul tidak butuh koneksi internet karena notifikasinya dikirim langsung oleh aplikasi yang terinstall, tanpa terhubung ke internet.

iOS notifications

Remote notification atau yang dikenal sebagai push notification hampir sama dengan local notification tapi bedanya adalah push notification datangnya dari luar perangkat. Asalnya dari server, dari layanan APNs Apple, dari internet.

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.

Apa hubungan BAR dan Push/Remote Notification?

Singkatnya, tidak ada.

BAR mengatur penjadwalan pengambilan informasi pada aplikasi yang berada di latar belakang. Aplikasi yang tidak running atau dihapus dari multitasking tidak akan mendapatkan keuntungan dari fitur BAR.

Notifikasi tidak mengatur konten aplikasi. Notifikasi tetap bisa sampai ke perangkat meskipun aplikasi tidak running sama sekali karena notifikasi (push notification) dikirim langsung dari APNs tanpa ada pengaruh dari BAR.

Beberapa kutipan terkait dari iOS Developer Library:

Remote notifications serve much the same purpose as a background app on a desktop system, but without the additional overhead. For an app that is not currently running—or, in the case of iOS, not running in the foreground—the notification occurs indirectly. The operating system receives a remote notification on behalf of the app and alerts the user. Once alerted, users may choose to launch the app, which then downloads the data from its provider. If an app is running when a notification comes in, the app can choose to handle the notification directly.

When a device is not online, APNs retains the last notification it receives from a provider for an app on that device. If the device then comes online, APNs pushes the stored notification to it. A device running iOS receives remote notifications over both Wi-Fi and cellular connections;

Intinya, BAR sama sekali tidak mempengaruhi penerimaan notifikasi suatu aplikasi. Jalur dan konten yang dikelolanya berbeda.

Penyebab Push Notification bisa bermasalah

Ada beberapa alasan kenapa notifikasi kadang bermasalah, termasuk di dalamnya adalah datangnya terlambat. Misalnya:

  • Adanya kesalahan dari sisi server si developer aplikasi atau yang disebut sebagai provider.
  • Sinyal rendah. Push notification di iOS lebih mengutamakan koneksi seluler bahkan ketika perangkat lagi terhubung ke wi-fi. Oleh karena itu kualitas sinyal seluler dan kestabilan jaringan internet juga berpengaruh pada penerimaan notifikasi.
  • On iOS, push notifications use the cellular data network whenever possible, even if the device is currently using Wi-Fi for other network activity such as web browsing or email. However, the push service will fall back to Wi-Fi if cellular data service isn’t available.

  • Koneksi wi-fi (untuk yang terhubung ke internet via wi-fi) bermasalah, terhalangi firewall atau ada port yang terblokir.
  • if the push service is using Wi-Fi, any firewalls between your device or computer and the Internet must allow TCP traffic to and from port 5223.

Kesimpulan

Background App Refresh dikelola iOS dan hanya aktif pada saat-saat tertentu sedangkan Push Notification ditangani oleh server atau push service Apple. Kedatangan atau penerimaan notifikasi yang asalnya dari remote/push sama sekali tidak terganggu oleh BAR yang nonaktif. BAR yang nonaktif dan aplikasi yang tidak berjalan pun masih tetap bisa menerima notifikasi.

Catatan:
Saya bukan developer aplikasi iOS, jadi kalau ada developer aplikasi iOS yang membaca ini dan terdapat kesalahan, mohon dikoreksi yang salah atau diarahkan ke halaman dokumentasi yang tepat :)

Referensi:
[Stack Overflow]
[iOS Human Interface Guidelines]
[Apple Developer]