Ada banyak utas stackoverflow mengenai topik ini, tetapi saya masih belum menemukan solusi yang baik.
Jika aplikasi tidak di latar belakang, saya dapat memeriksa launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
di application:didFinishLaunchingWithOptions:
panggilan untuk melihat apakah itu dibuka dari pemberitahuan.
Jika aplikasi berada di latar belakang, semua posting menyarankan untuk menggunakan application:didReceiveRemoteNotification:
dan memeriksa status aplikasi. Namun saat saya bereksperimen (dan juga seperti yang disarankan oleh API ini), metode ini dipanggil saat notifikasi diterima, bukan disadap.
Jadi masalahnya adalah, jika aplikasi diluncurkan dan kemudian di-background, dan Anda tahu pemberitahuan diterima dari application:didReceiveNotification
( application:didFinishLaunchWithOptions:
tidak akan memicu saat ini), bagaimana Anda tahu jika pengguna melanjutkan aplikasi dari dengan mengetuk pemberitahuan atau hanya mengetuk ikon aplikasi? Karena jika pengguna menge-tap notifikasi tersebut, harapannya adalah membuka halaman yang disebutkan dalam notifikasi tersebut. Kalau tidak, seharusnya tidak.
Saya dapat menggunakan handleActionWithIdentifier
untuk pemberitahuan tindakan kustom, tetapi ini hanya akan dipicu ketika tombol tindakan kustom diketuk, bukan saat pengguna mengetuk bagian utama pemberitahuan.
Terima kasih.
EDIT:
setelah membaca satu jawaban di bawah ini, saya berpikir dengan cara ini saya dapat menjelaskan pertanyaan saya:
Bagaimana kita bisa membedakan 2 skenario ini:
(A) 1.app pergi ke latar belakang; 2. pemberitahuan diterima; 3. pengguna mengetuk notifikasi; 4. aplikasi memasuki latar depan
(B) 1.app pergi ke latar belakang; 2. pemberitahuan diterima; 3. pengguna mengabaikan notifikasi dan mengetuk ikon aplikasi nanti; 4. aplikasi memasuki latar depan
Karena application:didReceiveRemoteNotification:
dipicu dalam kedua kasus di langkah 2.
Atau, harus application:didReceiveRemoteNotification:
dipicu di langkah 3 hanya untuk (A), tetapi entah bagaimana saya salah mengonfigurasi aplikasi sehingga saya melihatnya di langkah 2?