Saya mencoba membuat aplikasi saya berfungsi di Xcode 8.0 , dan saya mengalami kesalahan. Saya tahu kode ini berfungsi dengan baik di versi swift sebelumnya, tetapi saya berasumsi kode untuk ini diubah di versi baru. Inilah kode yang saya coba jalankan:
let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.shared().registerForRemoteNotifications()
Kesalahan yang saya dapatkan adalah "Label argumen '(forTypes :, kategori :)' tidak cocok dengan kelebihan beban yang tersedia"
Apakah ada perintah lain yang bisa saya coba agar ini berfungsi?
ios
push-notification
swift3
ios10
unusernotificationcenter
Asher Hawthorne
sumber
sumber
Jawaban:
Minta izin pengguna
Mendapatkan token perangkat
Jika terjadi kesalahan
Dalam kasus jika Anda perlu mengetahui izin yang diberikan
sumber
sumber
application.isRegisteredForRemoteNotifications()
untuk melihat apakah itu diberikan, dan gunakan metode delegasi lain jika Anda mengalami kesalahan. Baik? Ada yang lain?application.registerForRemoteNotifications()
setelah nyacenter.requestAuthorization
Selanjutnya, buka editor proyek untuk target Anda, dan di tab Umum, cari bagian Kerangka dan Perpustakaan Tertaut.
Klik + dan pilih UserNotifications.framework:
Gunakan metode delegasi Pemberitahuan
Untuk menerima pemberitahuan push
Periksa tautan di bawah untuk mengetahui metode delegasi Notifikasi lainnya
sumber
Saya memiliki masalah dengan jawaban di sini dalam mengonversi objek Data deviceToken ke string untuk dikirim ke server saya dengan beta Xcode 8 saat ini. Terutama yang menggunakan deviceToken.description seperti pada 8.0b6 yang akan mengembalikan "32 Bytes" yang mana tidak terlalu berguna :)
Inilah yang berhasil untuk saya ...
Buat ekstensi pada Data untuk menerapkan metode "hexString":
Dan kemudian gunakan itu ketika Anda menerima panggilan balik dari mendaftar untuk pemberitahuan jarak jauh:
sumber
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
Di iOS10 alih-alih kode Anda, Anda harus meminta otorisasi untuk pemberitahuan dengan yang berikut: (Jangan lupa untuk menambahkan
UserNotifications
Kerangka)Selain itu, kode yang benar untuk Anda adalah (gunakan di
else
kondisi sebelumnya, misalnya):Terakhir, pastikan
Push Notification
diaktifkan di bawahtarget
->Capabilities
->Push notification
. (nyalakanOn
)sumber
Nah ini bekerja untuk saya. Pertama di AppDelegate
Kemudian:
Untuk mendapatkan token perangkat:
sumber
Perhatian, Anda harus menggunakan utas utama untuk tindakan ini.
sumber
Pertama , dengarkan status pemberitahuan pengguna, misalnya,
registerForRemoteNotifications()
untuk mendapatkan token perangkat APN;Kedua , minta otorisasi. Saat diberi otorisasi oleh pengguna, deviceToken akan dikirim ke pendengar, yang
AppDelegate
;Ketiga , laporkan token perangkat ke server Anda.
sumber
Jawaban dari ast1 sangat sederhana dan bermanfaat. Ini berhasil untuk saya, terima kasih banyak. Saya hanya ingin menunjukkannya di sini, agar orang yang membutuhkan jawaban ini dapat menemukannya dengan mudah. Jadi, inilah kode saya dari mendaftar notifikasi lokal dan jarak jauh (push).
sumber
Cukup lakukan hal berikut di
didFinishWithLaunching:
:Ingat tentang pernyataan import:
sumber
registerForRemoteNotifications()
penangan penyelesaianrequestAuthorization()
. Anda bahkan mungkin ingin dikelilingiregisterForRemoteNotifications()
denganif granted
pernyataan:center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in if granted { UIApplication.shared.registerForRemoteNotifications() } }
Lihatlah kode yang dikomentari ini:
Beri tahu saya jika ada masalah!
sumber