panggil rest-api setiap kali aplikasi dibuka melalui pemberitahuan push [ditutup]

Untuk dasbor statistik saya di dalam backend saya perlu memanggil rest-api melalui alamofire yang memberi tahu backend bahwa pengguna membuka aplikasi melalui pemberitahuan push.

Bagaimana saya bisa mencapainya?


person Jochen Österreicher    schedule 26.01.2017    source sumber
comment
apakah Anda mencoba dengan applicationWillEnterForeground atau applicationDidBecomeActive ?   -  person Nazmul Hasan    schedule 26.01.2017
comment
tetapi bagaimana saya bisa membedakan apakah aplikasi dibuka secara manual atau melalui klik pemberitahuan push? Saya perlu melihatnya di dasbor saya apakah dorongannya efektif.   -  person Jochen Österreicher    schedule 26.01.2017
comment
melalui klik pemberitahuan push apa artinya? Tolong   -  person Nazmul Hasan    schedule 26.01.2017
comment
apakah Anda mencoba dengan UNUserNotificationCenterDelegate - userNotificationCenter(_ center: UNUserNotificationCenter, didReceive respon: UNNotificationResponse, withCompletionHandler penyelesaianHandler: @escaping () -› Void)   -  person Lucas Palaian    schedule 26.01.2017
comment
@LucasPalaian di mana saya dapat menempatkan kode ini? Saya kira viewcontroller dapat berbeda mengenai keadaan aplikasi (cold start, atau di latar belakang)   -  person Jochen Österreicher    schedule 26.01.2017
comment
Anda dapat mengatur delegasi aplikasi Anda untuk menyetujui protokol itu. impor UserNotifications, lalu AppDelegate: kelas AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate dan di badan kelas userNotificationCenter(_ center: UNUserNotificationCenter, didReceive respons: UNNotificationResponse, withCompletionHandler penyelesaianHandler: @escaping () -› Void)   -  person Lucas Palaian    schedule 26.01.2017
comment
Saya menggunakannya dengan notifikasi lokal, saya tidak tahu cara kerja notifikasi push tetapi menurut saya itu sama saja ketika berbicara tentang interaksi pengguna   -  person Lucas Palaian    schedule 26.01.2017
comment
@LucasPalaian oke saya mencobanya di rumah, sementara itu Anda dapat menulis jawaban lengkap untuk saya tandai sebagai benar   -  person Jochen Österreicher    schedule 26.01.2017


Jawaban (1)


Saya bekerja dengan notifikasi lokal jadi saya akan memberi Anda contoh tentang apa yang saya lakukan. Saya tidak tahu apakah ini cara yang sama untuk pemberitahuan push.

Apa yang saya lakukan adalah mengatur delegasi aplikasi agar sesuai dengan delegasi Pemberitahuan Pengguna

1: Impor

import UserNotifications

2: Tambahkan protokol

 class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate

3: Contoh Pusat Pemberitahuan

var notificationCenter: UNUserNotificationCenter!

4: Inisialisasi dan atur delegasi

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    notificationCenter = UNUserNotificationCenter.current()
    notificationCenter.delegate = self

    return true  
}

5: Respons Pusat Pemberitahuan

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

       print("notification pressed") 
}
person Lucas Palaian    schedule 26.01.2017
comment
Anda dapat melakukan hal yang sama (menambahkan delegasi pusat noti) di kelas terpisah tetapi Anda harus tetap menggunakannya di appDelegate. Semoga bisa membantu! - person Lucas Palaian; 26.01.2017
comment
kontribusi besar, sangat detail! Namun harus dikatakan bahwa ini hanya berfungsi untuk iOS 10 atau lebih tinggi. - person Jochen Österreicher; 26.01.2017
comment
Ohhh iya ya aku minta maaf :( - person Lucas Palaian; 26.01.2017
comment
tahukah Anda seperti apa di iOS 9? - person Jochen Österreicher; 26.01.2017
comment
Saya tidak tahu tetapi Anda dapat mencoba: func application(_ application: UIApplication, didReceive notifikasi: UILocalNotification) di delegasi aplikasi. Lihat pertanyaan ini mungkin membantu Anda: stackoverflow.com/questions/32901918 / - person Lucas Palaian; 26.01.2017