Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Saat aplikasi dan perangkat seluler mendaftar dengan layanan pemberitahuan push (seperti APNs atau Firebase Cloud Messaging), layanan pemberitahuan push akan mengembalikan token perangkat. Amazon SNS menggunakan token perangkat ini untuk membuat titik akhir platform, yang bertindak sebagai target untuk mengirim pesan notifikasi push langsung ke aplikasi di perangkat. Titik akhir platform berfungsi sebagai jembatan, merutekan pesan yang dikirim oleh Amazon SNS ke layanan pemberitahuan push untuk pengiriman ke perangkat seluler yang sesuai. Untuk informasi selengkapnya, silakan lihat Prasyarat untuk notifikasi pengguna Amazon SNS dan Menyiapkan pemberitahuan push dengan Amazon SNS.
Memahami token perangkat dan titik akhir platform
Token perangkat secara unik mengidentifikasi perangkat seluler yang terdaftar dengan layanan pemberitahuan push (misalnya APNs, Firebase Cloud Messaging). Saat aplikasi mendaftar dengan layanan notifikasi push, aplikasi akan menghasilkan token perangkat khusus untuk aplikasi dan perangkat tersebut. Amazon SNS menggunakan token perangkat ini untuk membuat titik akhir platform dalam aplikasi platform yang sesuai.
Titik akhir platform memungkinkan Amazon SNS mengirim pesan pemberitahuan push ke perangkat melalui layanan pemberitahuan push, menjaga koneksi antara aplikasi Anda dan perangkat pengguna.
Membuat endpoint platform
Untuk mendorong notifikasi ke aplikasi dengan Amazon SNS, token perangkat aplikasi tersebut harus terlebih dahulu terdaftar ke Amazon SNS dengan memanggil tindakan buat endpoint platform. Tindakan ini mengambil Amazon Resource Name (ARN) dari aplikasi platform dan token perangkat sebagai parameter dan mengembalikan ARN dari endpoint platform yang dibuat.
CreatePlatformEndpoint
Tindakan tersebut melakukan hal berikut:
-
Jika endpoint platform sudah ada, jangan membuatnya lagi. Kembali ke pemanggil ARN dari endpoint platform yang ada.
-
Jika titik akhir platform dengan token perangkat yang sama tetapi pengaturan yang berbeda sudah ada, jangan membuatnya lagi. Lempar pengecualian ke pemanggil.
-
Jika titik akhir platform tidak ada, buatlah. Kembali ke pemanggil ARN dari endpoint platform yang baru dibuat.
Anda tidak boleh langsung memanggil tindakan buat endpoint platform setiap kali aplikasi dimulai, karena pendekatan ini tidak selalu menyediakan endpoint yang berfungsi. Hal ini dapat terjadi, misalnya, saat aplikasi dihapus dan diinstal ulang pada perangkat yang sama dan endpoint untuk itu sudah ada tetapi dinonaktifkan. Proses pendaftaran yang berhasil harus memenuhi hal-hal berikut:
-
Pastikan endpoint platform ada untuk kombinasi aplikasi-perangkat ini.
-
Pastikan token perangkat di endpoint platform adalah token perangkat valid terbaru.
-
Pastikan endpoint platform diaktifkan dan siap digunakan.
Kode semu
Kode semu berikut menjelaskan praktik yang disarankan untuk membuat endpoint platform yang berfungsi, saat ini, dan diaktifkan dalam berbagai kondisi awal. Pendekatan ini berfungsi baik ini pertama kali aplikasi terdaftar atau tidak, apakah endpoint platform untuk aplikasi ini sudah ada, dan apakah endpoint platform diaktifkan, memiliki token perangkat yang benar, dan seterusnya. Aman untuk memanggilnya beberapa kali berturut-turut, karena tidak akan membuat endpoint platform duplikat atau mengubah endpoint platform yang ada jika sudah diperbarui dan diaktifkan.
retrieve the latest device token from the mobile operating system if (the platform endpoint ARN is not stored) # this is a first-time registration call create platform endpoint store the returned platform endpoint ARN endif call get endpoint attributes on the platform endpoint ARN if (while getting the attributes a not-found exception is thrown) # the platform endpoint was deleted call create platform endpoint with the latest device token store the returned platform endpoint ARN else if (the device token in the endpoint does not match the latest one) or (
GetEndpointAttributes
shows the endpoint as disabled) call set endpoint attributes to set the latest device token and then enable the platform endpoint endif endif
Pendekatan ini dapat digunakan kapan saja aplikasi ingin mendaftar atau mendaftar ulang sendiri. Ini juga dapat digunakan saat memberi tahu Amazon SNS tentang perubahan token perangkat. Dalam hal ini, Anda cukup memanggil tindakan dengan nilai token perangkat terbaru. Beberapa hal yang perlu diperhatikan tentang pendekatan ini adalah:
-
Ada dua kasus di mana ia dapat memanggil tindakan buat endpoint platform. Ini dapat disebut di awal, di mana aplikasi tidak mengetahui ARN endpoint platformnya sendiri, seperti yang terjadi selama pendaftaran pertama kali. Ini juga disebut jika panggilan
GetEndpointAttributes
tindakan awal gagal dengan pengecualian yang tidak ditemukan, seperti yang akan terjadi jika aplikasi mengetahui ARN endpoint tetapi telah dihapus. -
GetEndpointAttributes
Tindakan ini dipanggil untuk memverifikasi status titik akhir platform bahkan jika titik akhir platform baru saja dibuat. Ini terjadi ketika endpoint platform sudah ada tetapi dinonaktifkan. Dalam hal ini, tindakan buat endpoint platform berhasil tetapi tidak mengaktifkan endpoint platform, jadi Anda harus memeriksa ulang status endpoint platform sebelum mengembalikan kesuksesan.
AWS Contoh SDK
Kode berikut menunjukkan cara menerapkan kode semu sebelumnya menggunakan klien Amazon SNS yang disediakan oleh. AWS SDKs
Untuk menggunakan AWS SDK, Anda harus mengonfigurasinya dengan kredensi Anda. Untuk informasi selengkapnya, lihat File konfigurasi dan kredensial bersama di Panduan Referensi Alat AWS SDKs dan Alat.
- AWS CLI
-
Untuk membuat endpoint aplikasi platform
create-platform-endpoint
Contoh berikut membuat titik akhir untuk aplikasi platform tertentu menggunakan token yang ditentukan.aws sns create-platform-endpoint \ --platform-application-arn
arn:aws:sns:us-west-2:123456789012:app/GCM/MyApplication
\ --tokenEXAMPLE12345...
Output:
{ "EndpointArn": "arn:aws:sns:us-west-2:1234567890:endpoint/GCM/MyApplication/12345678-abcd-9012-efgh-345678901234" }
Untuk informasi selengkapnya, lihat Tindakan API push seluler.
Pemecahan Masalah
Panggilan berulang kali membuat endpoint platform dengan token perangkat yang sudah usang
Khusus untuk titik akhir FCM, Anda mungkin berpikir yang terbaik adalah menyimpan token perangkat pertama yang dikeluarkan aplikasi dan kemudian memanggil titik akhir platform buat dengan token perangkat itu setiap kali saat aplikasi start-up. Ini mungkin tampak benar karena membebaskan aplikasi dari keharusan mengelola status token perangkat dan Amazon SNS akan secara otomatis memperbarui token perangkat ke nilai terbarunya. Namun, solusi ini memiliki sejumlah masalah serius:
-
Amazon SNS mengandalkan umpan balik dari FCM untuk memperbarui token perangkat yang kedaluwarsa ke token perangkat baru. FCM menyimpan informasi tentang token perangkat lama untuk beberapa waktu, tetapi tidak selamanya. Setelah FCM melupakan koneksi antara token perangkat lama dan token perangkat baru, Amazon SNS tidak akan lagi dapat memperbarui token perangkat yang disimpan di endpoint platform ke nilai yang benar; itu hanya akan menonaktifkan endpoint platform saja.
-
Aplikasi platform akan berisi beberapa endpoint platform yang sesuai dengan token perangkat yang sama.
-
Amazon SNS memberlakukan kuota pada jumlah endpoint platform yang dapat dibuat mulai dengan token perangkat yang sama. Pada akhirnya, pembuatan endpoint baru akan gagal dengan pengecualian parameter yang tidak valid dan pesan kesalahan berikut: "Endpoint ini sudah terdaftar dengan token yang berbeda."
Untuk informasi selengkapnya tentang mengelola titik akhir FCM, lihat. Manajemen Amazon SNS untuk titik akhir Firebase Cloud Messaging
Mengaktifkan kembali endpoint platform yang terkait dengan token perangkat yang tidak valid
Ketika platform seluler (seperti APNs atau FCM) memberi tahu Amazon SNS bahwa token perangkat yang digunakan dalam permintaan publikasi tidak valid, Amazon SNS menonaktifkan titik akhir platform yang terkait dengan token perangkat tersebut. Amazon SNS kemudian akan menolak publikasi berikutnya untuk token perangkat tersebut. Meskipun Anda mungkin berpikir bahwa yang terbaik adalah mengaktifkan kembali endpoint platform dan terus memublikasikan, dalam sebagian besar situasi, hal ini tidak akan berhasil: pesan yang diterbitkan tidak terkirim dan endpoint platform menjadi dinonaktifkan lagi segera setelahnya.
Ini karena token perangkat yang terkait dengan endpoint platform benar-benar tidak valid. Pengiriman tidak dapat berhasil karena tidak lagi sesuai dengan aplikasi yang diinstal. Saat berikutnya dipublikasikan, platform seluler akan kembali menginformasikan Amazon SNS bahwa token perangkat tidak valid, dan Amazon SNS akan menonaktifkan lagi endpoint platform.
Untuk mengaktifkan kembali endpoint platform yang dinonaktifkan, endpoint tersebut harus dikaitkan dengan token perangkat yang valid (dengan panggilan tindakan atribut endpoint yang ditetapkan) lalu diaktifkan. Hanya dengan demikian pengiriman ke endpoint platform tersebut akan berhasil. Satu-satunya waktu mengaktifkan kembali endpoint platform tanpa memperbarui token perangkatnya akan berfungsi adalah ketika token perangkat yang terkait dengan endpoint itu dulu tidak valid tetapi kemudian menjadi valid lagi. Hal ini dapat terjadi, misalnya, saat aplikasi dihapus penginstalannya lalu diinstal kembali di perangkat seluler yang sama dan menerima token perangkat yang sama. Pendekatan yang disajikan di atas melakukan ini, memastikan untuk hanya mengaktifkan kembali endpoint platform setelah memverifikasi bahwa token perangkat yang terkait dengannya adalah yang terbaru yang tersedia.