Banyak orang yang mengira kalau aktif tidaknya fitur Background App Refresh (BAR) akan berpengaruh terhadap kelancaran penerimaan notifikasi di iOS.
Tidak jarang saat ada pengguna iPhone yang mengeluhkan masalah seputar notifikasi yang terlambat masuk, akan ada orang lain yang merespon dengan menanyakan fitur BAR, “background app refresh nya aktif gak?”, yang mengimplikasikan kalau masalah notifikasi tersebut disebabkan karena BAR-nya diaktifkan.
Soal notifikasi atau push notification ini saya sudah bahas sedikit di artikel Background App Refresh, dan sekarang saya mau bahas sedikit lagi sesuai dengan apa yang saya pahami dan saya amati 🙂 Dan semoga ini bermanfaat.
Background App Refresh
BAR merupakan bagian dari fitur multitasking iOS yang mulai diperkenalkan di iOS 7. Sesuai dengan namanya, fitur ini memungkinkan informasi dan khususnya konten dari sebuah aplikasi tetap dapat diperbarui meskipun aplikasinya sedang berada di background. Kalau dulunya sebelum iOS 7 fitur multitasking di iOS biasa-biasa saja, maka dengan adanya BAR fitur multitasking iOS jadi lebih true smart.
Dengan adanya BAR, iOS akan mempelajari kebiasaan pengguna dalam menggunakan aplikasi, seperti aplikasi-aplikasi mana saja yang paling sering digunakan dan pada waktu kapan saja. iOS akan mempelajari pola tersebut dan menjalankan proses refresh informasi di latar belakang sesuai dengan data-data kebiasaan yang telah dipelajari. Proses berjalannya 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 instant, tetapi tetap hemat resource (selengkapnya di sini).
Push Notification
Notifikasi adalah salah satu cara sebuah aplikasi/sistem operasi memberikan informasi atau event kepada pengguna. Notifikasi yang muncul bisa berupa banner, peringatan, suara dan badge/label. Notifikasi bisa muncul karena:
- Ada pesan baru yang sampai
- Ada event terbaru
- Data terbaru dari sebuah aplikasi telah siap untuk di-download
- Adanya perubahan status
Lalu, ada dua jenis notifikasi, yaitu:
- silent notification
- user notification
Silent notification tidak tampak pada pengguna karena sifatnya yang “silent“. Tidak ada pop-up atau getaran atau tanda apa pun untuk silent notification. Silent notification digunakan sebagai sinyal, atau komunikasi server ke aplikasi.
User notification adalah notifikasi yang nampak dan ditujukan khusus bagi user/pengguna. User notification terbagi dua jenis lagi, yaitu Local Notifications dan Remote Notifications (push 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 bersifat lokal, tersimpan di perangkat pengguna, bukan di server/Internet. Local notification biasanya muncul dari aplikasi-aplikasi yang berbasis waktu atau lokasi, atau yang tugasnya untuk memperingatkan pengguna seperti alarm, kalender, pengingat, to-do list, dan semacamnya. Notifikasi lokal yang muncul tidak butuh koneksi Internet karena notifikasinya dimunculkan langsung oleh aplikasi yang ter-install, tanpa harus terhubung ke Internet.
Remote notification atau yang dikenal sebagai push notification hampir sama dengan local notification tapi bedanya adalah push notification datangnya 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 tidak akan mempengaruhi penerimaan notifikasi suatu aplikasi. Jalur dan konten yang dikelolanya berbeda.
Penyebab Push Notification bisa terganggu
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 tidak stabil. 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 di saat-saat tertentu sedangkan Push Notification dikelola 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:
http://stackoverflow.com/questions/17262511/how-do-ios-push-notifications-work
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/NotificationCenter.html
https://developer.apple.com/notifications/