Setelah dibuat, apakah token perangkat notifikasi push pernah berubah?
Contoh ketika aplikasi diperbarui? atau dalam hal lain bisa berubah ??
Setelah dibuat, apakah token perangkat notifikasi push pernah berubah?
Contoh ketika aplikasi diperbarui? atau dalam hal lain bisa berubah ??
Jawaban:
Dari [Dokumentasi Apple ApplePushService] 2
sumber
Dokumentasi resmi Apple tidak jelas mengenai hal ini. Apa yang saya amati adalah ini: token tidak berubah untuk perangkat, aplikasi, dan domain tertentu (produksi vs. kotak pasir). Saya percaya bahwa ini harus tetap benar agar sistem dapat bekerja dengan andal. Pertimbangkan situasi di mana pembaruan aplikasi memicu token APN baru; jika saya menggunakan aplikasi baru seperti Twitter, dengan pemberitahuan diaktifkan, apa yang akan terjadi ketika saya memperbarui aplikasi saya dari iTunes? Haruskah saya berharap bahwa itu akan terus dikirim pemberitahuan meskipun saya belum menjalankan aplikasi sejak saya "menyinkronkan" pembaruan ke perangkat saya? Tindakan mengubah aplikasi tidak dapat memengaruhi sistem APN karena OS dapat menerima pemberitahuan atas nama Anda meskipun Anda belum menjalankan aplikasi yang diperbarui.
Untuk memperjelas, Apple menyatakan "Sebuah aplikasi harus mendaftar [dengan server APN] setiap kali diluncurkan dan memberikan token saat ini kepada penyedia". Saya setuju sepenuh hati; melakukannya akan melindungi aplikasi Anda dari asumsi buruk atau situasi yang tidak biasa.
Salah satu jawaban untuk Apakah token notifikasi push unik di semua aplikasi untuk satu perangkat? menunjukkan bahwa token perangkat unik per "pemasangan sistem operasi"; dan bahwa memulihkan dari cadangan ke perangkat akan mempertahankan token, tetapi menghapus perangkat akan menyebabkan token baru didapat. Ini akan sepenuhnya konsisten dengan niat Apple untuk operasi dan privasi yang mulus: menghapus perangkat cukup parah sehingga mungkin memerlukan asosiasi baru, tetapi pengguna yang memulihkan gambar setelah pembaruan OS ingin mempertahankan pemberitahuan yang ada. Jika saya mengingat pembaruan iOS5 baru-baru ini di iPad saya, saya memulihkan cadangan terbaru setelah meningkatkan, jadi ini akan menjaga konsistensi token pemberitahuan saya. [Edit: memulihkan cadangan ke yang berbeda perangkat TIDAK akan menduplikasi token.]
peringatan: Saya tidak memiliki pengetahuan yang pasti tentang subjek tersebut, hanya beberapa pengalaman yang masuk akal bekerja dengan APN (sebagai pengembang pihak ketiga). Seperti biasa, yang terbaik adalah memverifikasi asumsi Anda.
Pembaruan (Juni 2012):
Baru-baru ini saya memiliki kesempatan untuk> berbicara dengan teknisi Apple dan b> menjalankan beberapa tes dunia nyata, dan saya ingin mempresentasikan hasilnya:
Untuk lengkapnya, ketika saya berbicara tentang mengembalikan token APN, saya mengasumsikan konteks pengenal / aplikasi bundel tunggal.
Pertama, insinyur Apple mengatakan bahwa tidak mungkin dua perangkat mengembalikan APN yang sama. Terlepas dari komentar di bawah, saya belum dapat mengidentifikasi keadaan di mana ini gagal.
Kedua, berikut urutan dan hasil tes peningkatan:
Mulailah dengan iOS4 yang diinstal pada iPhone4; perangkat cadangan di iTunes
Tingkatkan ke iOS5
Dari pengujian sebelumnya, saya tahu bahwa token APN sekarang berbeda
Pulihkan cadangan ke perangkat
Token APN sekarang sama dengan langkah 1.
Atur ulang iOS (perangkat bersih)
Token APN berubah
Cadangkan ponsel yang berbeda ke iTunes dan pulihkan cadangan itu ke perangkat uji; pada dasarnya, saya memulihkan cadangan yang "salah", seolah-olah saya berpindah ponsel.
Token APN berubah lagi; lebih jauh itu berbeda dan tidak cocok dengan token baik token asli atau token "kloning".
Pulihkan cadangan yang "benar" ke perangkat.
Token APN sekarang sama dengan langkah 1.
Terakhir, saya memutakhirkan ponsel ke iOS6 (beta2), memulihkan cadangan saya, dan menguji ulang. Seperti yang diharapkan, token terus mencocokkan token pada langkah 1.
Pada titik ini, saya cukup yakin bahwa token APN tidak dapat diduplikasi di antara perangkat yang berbeda; mungkin ini mungkin terjadi sebagai bug di versi iOS sebelumnya, tetapi saya yakin bahwa iOS5 (dan mungkin iOS6) menangani token APN dengan benar.
Pembaruan (Agustus 2012)
Saya baru menyadari bahwa saya belum menambahkan ini: token perangkat akan berubah. Salah satu pengembang Apple berbagi dengan saya bahwa token benar-benar kedaluwarsa (setelah 2 tahun, menurut saya). Untuk banyak tujuan, ini cukup lama sehingga bisa dianggap tidak berubah.
[Saya tidak khawatir jika saya harus memperbarui skrip pengujian saya dengan token baru setiap dua tahun, terutama karena saya berganti ponsel setiap tahun.]
sumber
Saya baru saja mengujinya dengan iOS9 dan perubahan token APN Push jika saya menginstal ulang aplikasi.
sumber
YA , token perangkat dapat berubah.
Setiap kali aplikasi Anda menerima token, itu harus menyimpannya. Kemudian, setiap kali token baru diterima (yang pada akhirnya akan terjadi), bandingkan token baru dengan token yang disimpan dan, jika berbeda:
nil
)Secara praktis, langkah terakhir adalah yang paling mungkin tidak sepele. Misalnya, jika Anda memiliki layanan yang mengirimkan peringatan cuaca ke token perangkat berdasarkan kode pos langganan perangkat tersebut, Anda harus meneruskan layanan tersebut
old_token
dannew_token
ke sehingga dapat memperbarui pengiriman.Ergo, secara umum 100% API yang menerima "token perangkat" juga harus memiliki beberapa jenis
UPDATE
fasilitas untuk token itu. Untuk tidak membangun untuk ini adalah untuk membangun untuk pemberitahuan mis-disampaikan dan non-disampaikan.sumber
Token perangkat berubah dari iOS 8 dan yang lebih baru
Silakan lihat teks di bawah ini dari situs web Apple. Mendaftarkan, Menjadwalkan, dan Menangani Pemberitahuan Pengguna
sumber
Saya pikir perlu disebutkan karena tidak ada yang melakukannya bahwa token berubah setelah Anda menelepon
unregisterForRemoteNotifications
. Saat Anda meneleponregisterForRemoteNotifications
lain kali, tokennya berbeda. Saya gagal menemukan konfirmasi apa pun tentang ini di dokumen Apple tetapi saya menyaksikan sendiri perilaku seperti itu. Harap diingat inisumber
Seharusnya tidak berubah, kecuali aplikasi Anda dipulihkan ke perangkat baru (pada saat itu ia tidak akan diminta untuk menerima pemberitahuan push lagi, dan hanya akan mengirimi Anda panggilan terdaftar di mana Anda harus menerima token baru).
Tetapi Apple tidak menjamin bahwa itu tidak pernah berubah (karena itu dokumentasi tidak pernah menyebutkannya). Anda lebih baik memprogram untuk yang terburuk dan menganggapnya mungkin berubah suatu hari. Selain itu, mengirim token ke server Anda secara teratur memungkinkan Anda untuk menghapus token yang tidak terdaftar untuk sementara waktu, dan mungkin telah menghapus instalasi aplikasi Anda atau kehilangan minat beberapa waktu yang lalu (dan dokumentasi menentukan ini sebagai perilaku yang diinginkan!).
sumber
Dari - Apple Docs
Selain itu:
sumber
Tautan dengan cepat menjadi usang dengan apel! jadi saya mengutip apa yang tampaknya cukup jelas sekarang:
Dari panduan ini
sumber
Sebagai referensi untuk hal-hal pemberitahuan push Apple
Token perangkat adalah kunci Anda untuk mengirimkan pemberitahuan push ke aplikasi Anda pada perangkat tertentu. Token perangkat dapat berubah, jadi aplikasi Anda perlu mendaftar ulang setiap kali diluncurkan dan meneruskan token yang diterima kembali ke server Anda. Jika Anda gagal memperbarui token perangkat, notifikasi jarak jauh mungkin tidak sampai ke perangkat pengguna. Token perangkat selalu berubah saat pengguna memulihkan data cadangan ke perangkat atau komputer baru atau menginstal ulang sistem operasi. Saat memigrasi data ke perangkat atau komputer baru, pengguna harus meluncurkan aplikasi Anda satu kali sebelum notifikasi jarak jauh dapat dikirimkan ke perangkat itu.
Jangan pernah menyimpan token perangkat; selalu dapatkan token dari sistem kapan pun Anda membutuhkannya. Jika aplikasi Anda sebelumnya terdaftar untuk notifikasi jarak jauh, memanggil metode registerForRemoteNotifications lagi tidak akan menimbulkan biaya tambahan, dan iOS mengembalikan token perangkat yang ada ke delegasi aplikasi Anda segera. Selain itu, iOS memanggil metode delegasi Anda setiap kali token perangkat berubah, tidak hanya sebagai respons terhadap pendaftaran atau pendaftaran ulang aplikasi Anda.
sumber
Menurut tautan ini token perangkat
sumber
Ya itu bisa berubah. Idealnya kapan pun kita menerima token melalui metode callback
Aplikasi harus mendaftarkan / menyegarkan token di server jarak jauh. Ini akan memastikan bahwa token di APNS dan server Anda tetap sinkron.
Sesuai dokumentasi Apple ,
sumber
Relai token perangkat pada penginstalan aplikasi.
Artinya jika Anda menginstal ulang aplikasi, itu berubah ; tidak masalah jika Anda melakukannya dari cadangan, peningkatan iOS ecc ..
Cara yang tepat untuk menggunakannya, untuk menghindari masalah apa pun, adalah mendapatkan yang diberikan pada
NSPAppDelegate
setiap peluncuran aplikasi, dalam metodedidRegisterForRemoteNotificationsWithDeviceToken
sumber