Cordova-plugin-firebase: onNotificationOpen tidak diaktifkan jika aplikasi dalam keadaan tertutup - proses aplikasi dimatikan di latar belakang.

Dibuat pada 24 Nov 2016  ·  46Komentar  ·  Sumber: arnesson/cordova-plugin-firebase

Hai,

Saya tidak tahu apakah ini perilaku default atau tidak. Tetapi ketika aplikasi dalam keadaan tertutup (proses aplikasi dimatikan), maka pemberitahuan push datang dan mengetuknya, onNotificationOpen tidak diaktifkan. Apakah ini seperti yang diharapkan atau ada yang perlu diperbaiki?

messaging

Komentar yang paling membantu

FirebasePlugin.java

<strong i="6">@Override</strong>
protected void pluginInitialize() {
    final Context context = this.cordova.getActivity().getApplicationContext();
    final Bundle extras = this.cordova.getActivity().getIntent().getExtras();
    this.cordova.getThreadPool().execute(new Runnable() {
        public void run() {
            Log.d(TAG, "Starting Firebase plugin");
            mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
            if(extras != null && extras.size()>1) {
                // FirebasePlugin.sendNotification(extras);
                if (FirebasePlugin.notificationStack == null) {
                    FirebasePlugin.notificationStack = new ArrayList<Bundle>();
                }
                notificationStack.add(extras);

            }
        }
    });
}

Semua 46 komentar

saya juga menghadapi masalah yang sama :(

gunakan acara resume cordova untuk menghubungkan panggilan balik lagi. lihat dokumen cordova tentang siklus hidup Android: http://cordova.Apache.org/docs/en/6.x/guide/platforms/android/index.html#lifecycle -guide

@robertarnesson Maukah Anda menjelaskan jawaban Anda sedikit lagi? Saya mendapatkan masalah yang sama di iOS. Saya dapat menerima pemberitahuan saat aplikasi berjalan di latar depan dan latar belakang, tetapi segera setelah saya menutup/keluar dari aplikasi saya, saya tidak dapat menerima pemberitahuan lagi.

Saya menerima pemberitahuan di latar belakang dan latar depan (Android 6.0.1)... Tetapi pemberitahuan terbuka tidak mengaktifkan aplikasi, pemberitahuan baki dihapus setelah ketuk dan data pemberitahuan hilang. (ini terjadi bahkan ketika aplikasi dalam jeda). Mungkinkah karena penyeberangan? Apakah ada perbaikan?

@robertarnesson @Taracque

Tidak yakin apakah ini membantu, tetapi saya sangat benci ketika orang menggunakan kata-kata atau tautan alih-alih contoh kode mereka sendiri untuk mencoba dan membantu.

Ini adalah interpretasi dasar dari apa yang saya miliki di index.html saya dan ini berfungsi untuk iOS dan Android dengan muatan dikirim ke aplikasi untuk manipulasi.

Saya menemukan bahwa dengan iOS saya hanya perlu menggunakan fungsi 'deviceready' dari cordova.js karena ini sepertinya menyala setiap kali pemberitahuan diterima ketika aplikasi berada di latar depan DAN setelah melanjutkan aplikasi yang ada di latar belakang baik itu dengan mengetuk tombol pemberitahuan atau hanya membuka aplikasi.

Untuk Android saya perlu menggunakan 'resume' karena 'deviceready' sepertinya hanya diaktifkan sekali ketika aplikasi pertama kali dimuat (masuk akal saya kira).

function onLoad(){

    //fire this with load of the HTML page
    document.addEventListener("deviceready", onDeviceReady, false);

    }

    function onDeviceReady(){

    // this will fire when the app first runs (iOS and Android)
    // iOS will run this after tapping a notification as well but not Android

    // Create the resume as soon as the device is ready.
    document.addEventListener("resume", onResume, false); 

    // add initial cordova-plugin-firebase function calls here
    // e.g TokenRefresh, onNotificationOpen etc

    window.FirebasePlugin.onTokenRefresh(function(token){

    //Do something with the token server-side if it exists

    });

    // get any initial or resume notification (used for iOS)
    var payload = getNotification();

    }

    function getNotification(){

    // get any notification variables for use in your app
    window.FirebasePlugin.onNotificationOpen(function(notification){

    //Check if notification exists then do something with the payload vars
    var str = JSON.stringify(notification);
    console.log(str);

    });

    return str;

    }

    function onResume(){
    //Add plugin functions here after app has resumed from background
    // or after notification is tapped (needed for Android)

    //get resume notification and payload (needed for Android)

    var payload = getNotification();

    }

hai teman-teman, saya pikir kita kehilangan poin di sini. aplikasi itu sendiri bahkan tidak di latar belakang atau latar depan. Anda mencoba mematikan aplikasi dan fungsinya tidak diaktifkan, kami tidak dapat menggunakannya saat melanjutkan karena aplikasi tidak ditangguhkan, aplikasi tidak bergerak ke latar depan tetapi sedang dimulai. bahkan setelah perangkat siap, onNotification open tidak diaktifkan.

Tidak yakin saya mengerti tetapi apakah ini benar.

1: aplikasi Anda benar-benar tidak aktif
2: Anda menerima pemberitahuan asli untuk aplikasi
3 Anda mengklik notifikasi
4 aplikasi dimuat
5 onNotificationOpen tidak aktif

Apakah ini benar?

Untuk OS apa ini?

Bisakah Anda memberikan beberapa kode Anda?

Apakah Anda memasukkan Cordova.js dalam skrip Anda?

Apakah Anda 100% yakin tidak ada kesalahan js di halaman pemuatan?

@device68 Saya ingin tahu apakah onNotificationOpen diaktifkan saat aplikasi tidak diluncurkan pada awalnya, seperti kata @nikrhes .
Saya telah menguji di Android dan iOS dengan onNotificationOpen dipanggil di resume dan perangkat siap. Dan hanya situasi yang saya sebutkan di atas yang tidak berhasil. Ada juga beberapa perilaku tak terduga dengan situasi lain juga.
Anda dapat melihat edisi #137 yang saya buka.

@chanphillip , saya akan melihatnya di pagi hari. Saya tidak dapat mengonfirmasi iOS 10 karena saya menggunakan XCODE versi lama, tetapi saya akan melihat apa yang sebenarnya terjadi di Android.

Aplikasi Saya memanfaatkan secara signifikan baik awal yang dingin dengan muatan dari pemberitahuan dan resume, tetapi belum melihat masalah apa pun.

@ device68 semua situasi berfungsi dengan baik hanya ketika aplikasi tidak aktif, fungsinya tidak diaktifkan sama sekali. Saya diuji, hampir di setiap iOS dan Android OS saya bisa pegang. Masih tidak bekerja.

Dari apa yang saya ingat selama pengujian saya hari ini di Android, inilah yang terjadi.

1 aplikasi tidak aktif

Jika saya menerima pemberitahuan dan mengkliknya, ini memuat aplikasi seperti yang diharapkan dan kode plugin apa pun dalam onDeviceReady akan menangkap muatan itu.

Kode apa pun dalam Resume tidak akan menangkap muatannya.

Pemberitahuan lebih lanjut saat aplikasi masih aktif dan belum diminimalkan, diterima oleh fungsi di dalam onDeviceReady.

2 meminimalkan aplikasi pertama kali.

Pertama kali saya meminimalkan aplikasi ini berhenti diDeviceReady karena keputusannya sudah siap dan sekarang menunggu status resume.

Jika saya mendapatkan notifikasi dan mengetuknya, aplikasi akan terbuka dan kode plugin di dalam Resume sekarang menangkap muatannya.

Semua pemberitahuan selanjutnya diterima oleh Resume.

3 aplikasi yang diperkecil (secara umum)

Jika aplikasi saya diminimalkan setiap saat dan saya mengklik pemberitahuan Lanjutkan menangkap ini, TETAPI jika saya tidak mengkliknya dan malah membuka aplikasi secara manual, Lanjutkan tidak melakukan apa-apa dan tidak ada onNotificationOpen yang diaktifkan di mana pun dalam kode saya.

Perhatikan aktivitas ini sangat berbeda di iOS 9.3

4 aplikasi latar depan

Jika setelah melanjutkan saya mendapatkan pemberitahuan saat berada di aplikasi, Lanjutkan menangkap muatannya.

5 aplikasi pembunuhan

Jika saya mematikan aplikasi, kita mulai dari #1

6 Muatan

Dua perbedaan yang saya lihat dengan data yang dikirim GCM di Android bergantung pada apakah notifikasi diklik di luar aplikasi atau diterima saat berada di latar depan.

Google menambahkan kode waktu, dari, ID pesan dll jika pemberitahuan disadap.

Google menghapus yang di atas tetapi hanya menambahkan tap = false dalam semua keadaan lainnya.

Setiap vars data yang Anda kirim ada dalam semua kasus.

Saya menggunakan API Curl sisi server untuk mengirim pesan antara web, Android, dan iOS

Pada akhirnya semuanya tampak logis di Android, sebenarnya implementasi iOS yang salah dan tidak logis.

Segala sesuatu di iOS berfungsi dengan onDeviceReady dan onNotificationOpen dipanggil setiap kali pemberitahuan diterima bahkan ketika Anda membuka aplikasi secara manual setelah mendapat pemberitahuan, mengklik pesan, atau menerima pemberitahuan saat aplikasi berada di latar depan.

Semoga ini membantu.

Tetapi Anda harus menggunakan onDeviceReady dan Resume dan menempatkan versi onNotificationOpen di bawah masing-masing jika Anda ingin menangkap muatan dalam semua situasi.

@ device68 Terima kasih atas penjelasan terperinci Anda.
Sebenarnya saya mengatakannya salah, saya juga memasukkan onNotificationOpen ke resume perangkat dan siap, tetapi use case 1 (mengklik notifikasi ketika aplikasi bahkan tidak diluncurkan) tidak berfungsi di pihak saya, sementara kasus penggunaan lainnya berfungsi seperti yang Anda jelaskan.

Saya berasumsi Anda tidak menggunakan kerangka kerja ionik selama pengujian. Saya menggunakan platform.ready() tetapi harus sama dengan deviceready dari pemahaman saya.

Bisakah Anda mengonfirmasi dua kali bahwa onNotificationOpen diaktifkan bahkan ketika aplikasi tidak diluncurkan (aplikasi dimatikan) di pihak Anda? Apakah mungkin bagi Anda untuk menguji ini di iOS juga? Terima kasih.

@chanphillip tidak masalah senang saya bisa membantu.

Benar, saya hanya menggunakan plugin phonegap mentah yang diinstal melalui CLI dan kemudian plugin ini diinstal di dalamnya.

Hmm sebenarnya saya melakukan beberapa tes lebih lanjut dan membuat video perangkat saya dengan peringatan di 4 tempat.

https://www.youtube.com/watch?v=xrWQH2wE8Fo

Ini tampaknya mengkonfirmasi apa yang Anda lihat. onNotificationOpen TIDAK diaktifkan sama sekali saat mengetuk notifikasi yang menyebabkan boot dingin aplikasi. Hanya setelah ini pemberitahuan dikumpulkan dari fungsi onNotificationOpen.

Pendengar menyala seperti yang diharapkan tetapi tidak pada NotificationOpen.

Bagi saya ini bukan masalah khusus untuk aplikasi saya yang mungkin menjelaskan mengapa saya belum melihatnya sampai sekarang.

Saya telah menguji pada perangkat yang menjalankan Android 4+, 6+ dan 7+, semua hasil yang sama.

Sayangnya saya tidak berpikir saya dapat membantu banyak dengan iOS, saya menggunakan Virtualbox dengan Yosemite dan XCODE 7.1 (dipaksa untuk menyertakan iOS 9.3 SDK) Saya menemukan pemberitahuan bekerja secara eksklusif dengan onDeviceRedy dan bahkan tidak perlu menggunakan Resume. Ini untuk perangkat dengan iOS 9+ tetapi di bawah 10+

Namun pengguna akhir memperbarui ponsel mereka ke 10.2 dan notifikasi telah berhenti bekerja. Saya percaya itu karena bangunan XCODE saya dengan 9.3 SDK, sekarang saya perlu membeli Mac :-(

Beri tahu saya jika videonya membantu.

Saya menghadapi masalah yang sama. Aplikasi terbuka tetapi tidak memicu fungsi. Saya mencoba mereproduksi perilaku di video Anda dan tentu saja saya menunggu status siap di perangkat. Tetapi metode ini tidak pernah memicu.

Harap dicatat: saat mengevaluasi fungsi melalui soket lighttable, ini berfungsi. Ini HANYA berfungsi ketika saya mengevaluasinya di IDE. Tetapi fungsinya tidak pernah terpicu, seperti versi plugin metode "tidak dipanggil". Mengapa mengevaluasi fungsi berfungsi?

Hai, yang di sana,
Saya menghadapi masalah yang sama, jadi saya mencoba memahami apa yang terjadi dalam kode.
Untuk kasus penggunaan awal yang dingin, dokumen mengatakan untuk menggunakan onNewIntent.
Kode untuk plugin terlihat bagus.

    <strong i="9">@Override</strong>
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        FirebasePlugin.sendNotification(intent.getExtras());
    }

Tetapi panggilan balik ini untuk dipanggil membutuhkan pemberitahuan yang menetapkan maksud untuk mulai menggunakan click_action di payload

{
  "to": "/topics/news",
  "notification": {
    "title": "Click Action Message",
    "text": "Sample message",
    "click_action": "android.intent.action.MAIN"
  }
}

Saya mencoba melakukannya tetapi tidak berhasil, tidak yakin ingin harus diatur dalam tindakan klik.
Berapa pun nilai yang saya tetapkan, aplikasi tidak diluncurkan

        <activity android:name="MainActivity" >
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Untuk mengatasi tindakan miss of click, mungkin lebih baik membaca konten tambahan selama plugin init.
Saya mencoba dengan kode ini dan kali ini saya mendapat notifikasi.

<strong i="21">@Override</strong>
    protected void pluginInitialize() {
        final Context context = this.cordova.getActivity().getApplicationContext();
        final Bundle extras = this.cordova.getActivity().getIntent().getExtras();
        this.cordova.getThreadPool().execute(new Runnable() {
            public void run() {
                Log.d(TAG, "Starting Firebase plugin");
                mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
                if(extras != null && extras.size()>1) {
                    FirebasePlugin.sendNotification(extras);

                }
            }
        });
    }

Pokoknya itu terlihat seperti peretasan yang kotor.

Ok saya berhasil menggunakan click_action dengan menambahkan kategori default di manifest.xml tetapi onNewIntent tidak dipanggil.

            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

FirebasePlugin.java

<strong i="6">@Override</strong>
protected void pluginInitialize() {
    final Context context = this.cordova.getActivity().getApplicationContext();
    final Bundle extras = this.cordova.getActivity().getIntent().getExtras();
    this.cordova.getThreadPool().execute(new Runnable() {
        public void run() {
            Log.d(TAG, "Starting Firebase plugin");
            mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
            if(extras != null && extras.size()>1) {
                // FirebasePlugin.sendNotification(extras);
                if (FirebasePlugin.notificationStack == null) {
                    FirebasePlugin.notificationStack = new ArrayList<Bundle>();
                }
                notificationStack.add(extras);

            }
        }
    });
}

Saya memiliki masalah yang sama seperti yang dijelaskan di atas, terutama, muatan notifikasi tidak terkirim saat aplikasi dimulai melalui penyadapan notifikasi. Saran @ huny0522 tampaknya memperbaiki masalah. 👍

Menarik, saya tidak secara khusus membutuhkan ini, tetapi akan mencoba juga dan melihat apakah itu berhasil untuk saya. Akan ideal jika pengembang plugin ini dapat mengimplementasikan perubahan ini entah bagaimana karena tampaknya menjadi masalah besar bagi kebanyakan orang yang membutuhkan muatan notifikasi setelah boot dingin suatu aplikasi.

Masalah ini telah diperbaiki atau akan diperbaiki pada rilis berikutnya!?

Patch dari @ huny0522 tidak menyelesaikan masalah bagi saya. onNotificationReceived callback diabaikan dengan Android cold start. Semua skenario lain berperilaku seperti yang diharapkan.

Menginstal ulang plugin dari github memecahkan masalah yang dikeluarkan untuk saya, setelah mencoba semua solusi yang disarankan

plugin cordova tambahkan https://github.com/arnesson/cordova-plugin-firebase.git --save

Seseorang telah memecahkan

langkah 3 yang @device68 tulis ??

aplikasi yang diperkecil (secara umum)

Jika aplikasi saya diminimalkan setiap saat dan saya mengklik pemberitahuan Lanjutkan menangkap ini, TETAPI jika saya tidak mengkliknya dan malah membuka aplikasi secara manual, Lanjutkan tidak melakukan apa-apa dan tidak ada onNotificationOpen yang diaktifkan di mana pun dalam kode saya.

Ini adalah satu-satunya masalah saya sekarang.

Masalah serupa di sini.

Saya harus menghapus baris ini dari objek terkirim: "click_action":"YOUR_DATA_HERE".

Sekarang, Aplikasi diluncurkan dengan benar ketika saya menyentuh pemberitahuan yang diterima di latar belakang.

Semoga membantu.

Saya juga memiliki masalah yang sama pada aplikasi ionic/cordova, tetapi hanya pada perangkat dengan Android 6.0. Di perangkat ini, pemberitahuan selalu dipicu di bilah status, apakah saya memiliki aplikasi di latar belakang atau latar depan (!) dan panggilan balik tidak pernah dipicu ketika saya membuka pemberitahuan, jadi saya tidak mendapatkan muatannya.
Setiap perangkat lain yang saya uji baik-baik saja (Android 5, iOS 9 dan10): di latar depan itu memicu data panggilan balik dan saya bereaksi terhadapnya, dan di latar belakang menerima pemberitahuan secara normal di bilah status seperti yang dijelaskan dalam dokumen.

@abhishek-kollipara masalah yang dibahas bukanlah bagaimana mengambil muatan di latar depan/latar belakang, melainkan ketika aplikasi di-boot dingin melalui penyadapan pemberitahuan dan mengambil muatan pemberitahuan darinya. ini bukan masalah tentang bagaimana payload terbentuk terutama ketika dijelaskan dalam dokumen plugin lain dan bukan yang ini.

Saya mendapatkan kesuksesan pertama saya dengan menangkap muatan pada boot dingin sejak dua hari terakhir ketika saya mulai memburunya. dapatkan 'niat web' plugin asli ionik. instal seperti yang didokumentasikan dan gunakan fungsi bawaan getIntent() saat boot. jika aplikasi di-boot oleh notifikasi, data notifikasi akan berada di suatu tempat di dalam objek yang dikembalikan.

@heidji Ini berfungsi di iOS?

Pada kasus saya:

Android:
-Mulai dingin: Luncurkan OnNotificationOpen
-Aplikasi yang diminimalkan: Luncurkan OnNotificationOpen
-Aplikasi latar depan: Luncurkan OnNotificationOpen

IOS:
-Mulai dingin: BUKAN Luncurkan OnNotificationOpen
-Aplikasi yang diminimalkan: Luncurkan OnNotificationOpen
-Aplikasi latar depan: Luncurkan OnNotificationOpen

Terimakasih atas bantuannya

@Hanzofm Sejujurnya saya tidak tahu apakah itu berfungsi di iOS. coba saja gunakan plugin Web Intent dan catat outputnya di konsol saat boot.

Saya memiliki perilaku yang sama di iOS yang dijelaskan oleh @Hanzofm

Saya memiliki perilaku yang sama di iOS. onNotificationOpen tidak dipanggil pada Cold start dari aplikasi iOS saat mengklik notifikasi. Menggunakan plugin versi 0.1.25.

Memperbarui:
Saya menggunakan "cordova-plugin-local-notifications" juga dengan plugin firebase dan itu menyebabkan masalah. Ketika saya menghapus plugin "cordova-plugin-local-notifications" itu berfungsi dengan baik.

Saya juga mengalami kesulitan mendapatkan noNotificationOpen untuk diaktifkan pada cold start (iOS). Apakah ada solusi di luar sana?

Terima kasih

Dalam kasus saya diselesaikan dengan menghapus plugin pemberitahuan lokal. Ada ketidakcocokan dengan plugin ini dan plugin pemberitahuan push

Saya tidak memiliki plugin itu, sayangnya :)

Apakah ini seharusnya menyala?

skjermbilde 2018-04-27 kl 09 22 50

Penutupan untuk pembersihan. Silakan uji dengan versi terbaru dan buka kembali jika masih menjadi masalah.

@heidji katakanlah kami memecahkan masalah dengan menggunakan metode Anda, apakah Anda punya cara untuk mendapatkan data notifikasi dalam situasi berikut?

Aplikasi ini benar-benar tertutup. Pengguna menerima pemberitahuan push. Pengguna tidak mengklik notifikasi tetapi menghapusnya dari bilah notifikasi. Pengguna membuka aplikasi nanti dan pergi ke halaman notifikasi dan tidak melihat apa-apa. Karena pengguna tidak mendapatkan notifikasi di latar depan atau mengkliknya untuk membuka aplikasi. Tapi kita masih perlu tahu bahwa notifikasi ini ada untuk menunjukkan kepada pengguna. Bagaimana melakukan ini di ionic3?

@akildemir tidak ada cara untuk melakukannya di Ionic, Anda harus mencatat pemberitahuan di server Anda sendiri dan mengambilnya ketika pengguna membuka aplikasi seperti yang biasanya dilakukan siapa pun.

@heidji bagaimana saya akan mencatat pemberitahuan ke server saya untuk mengambilnya, jika saya tidak tahu bahwa pemberitahuan ini ada?
Apakah ada cara firebase juga mengirimkan pemberitahuan ke server saya dengan perangkat atau Apakah maksud Anda tidak menggunakan firebase tetapi menggunakan server Anda sendiri untuk pemberitahuan?

@akildemir Maksud saya ketika Anda BUAT pemberitahuan push, Anda juga mendaftarkan keberadaannya di tempat lain, seperti di server Anda sendiri atau server apa pun yang Anda gunakan untuk proyek Anda. Saya pikir firebase juga menyediakan layanan ini.
Saya tidak tahu bagaimana Anda membuat pemberitahuan ini tetapi dalam proyek saya ketika sesuatu terjadi di server PHP saya, misalnya seseorang mengirimi Anda pesan, saya menghubungi firebase untuk mengirim pemberitahuan dan saya JUGA menyimpan acara ini dengan "is_read = 0" bendera, jadi jika pengguna tidak pernah mengklik notifikasi, dia dapat mengambilnya di situs web atau aplikasi menggunakan layanan Anda sendiri untuk memanggil notifikasi ini atau apa pun, hanya hal-hal standar dev..

@heidji Saya tidak memiliki situs web untuk aplikasi saya tetapi ya apa yang Anda katakan cukup logis, saya dapat menyimpan pemberitahuan di server saya pada saat yang sama dan mengambilnya nanti. Terima kasih! dan ya saya bisa dihitung sebagai pemula dalam hal-hal pengembang seluler. Juga bolehkah saya bertanya sesuatu yang lain? Bagaimana saya bisa mendaftarkan notifikasi yang sama ke beberapa perangkat melalui firebase? Anda dapat menganggapnya seperti obrolan grup. Saat seseorang mengetik sesuatu di obrolan grup, semua orang di grup akan mendapatkannya. Saya menggunakan format ini untuk mendaftarkan pemberitahuan:

biarkan tubuh = {
"pemberitahuan":{
"judul":"judul" , "body":"body" ,
},
"data":{
"param1" : "nilai1"
},
"ke": DeviceId ,
"prioritas":"tinggi",
"restricted_package_name":""
}

  let options = new HttpHeaders().set('Content-Type','application/json');
  this.http.post("https://fcm.googleapis.com/fcm/send",body,{
    headers: options.set('Authorization', 'key=),
  })

di sini jika Anda meneruskan deviceId ke bagian "ke" yang dikirim ke perangkat. tetapi bisakah saya melewati beberapa deviceId di sini?

@nikrhes Anda dapat memeriksanya di meta data:
window.FirebasePlugin.onNotificationOpen().subscribe((data) => {
if (data.tap) {
// pengguna mengetuk notifikasi
} lain {
// aplikasi berjalan di latar depan
}
});

Saya tidak yakin bahwa ini pernah diselesaikan tetapi telah mencari jawabannya selama berbulan-bulan melalui berbagai utas di luar sana tentang hal itu. Untuk lebih jelasnya, masalahnya adalah onNotification tidak diaktifkan secara khusus dalam kasus iOS di mana aplikasi benar-benar ditutup/mati/dimatikan. Notifikasi masuk, cold boot aplikasi, tetapi fungsinya tidak menyala dan payload tidak terkirim.

@heidji - solusi Anda untuk menyimpan acara Push di server dan memeriksa apakah sudah dibaca masuk akal. Namun, dalam aplikasi kami ada skenario yang tidak akan berhasil (yaitu dan kami memerlukan penentuan apakah notifikasi diaktifkan berdasarkan apakah pengguna benar-benar mengkliknya atau tidak, apakah mereka telah membacanya.)

Tetapi hal utama, seperti yang telah dinyatakan oleh banyak orang lain, adalah bahwa ini tampaknya merupakan perilaku kritis yang harus ada solusinya?

@wwwguy solusi saya bukan solusi. itu adalah praktik standar yang digunakan semua orang, besar atau kecil.
Anda tidak dapat mengandalkan penekanan notifikasi, ini bukan acara yang dijamin. maksud saya ketika saya menekan notifikasi facebook di ponsel xiaomi saya terkadang aplikasinya bahkan tidak pernah terbuka.

Ya saya mengerti. Kami telah menyebarkan lusinan aplikasi untuk banyak klien yang berbeda. Kami menggunakan praktik pelacakan notifikasi "terbaca" di server juga di beberapa aplikasi kami. Tetapi ada kasus lain yang perlu dipertimbangkan - yaitu pemberitahuan yang lebih dari sekadar pemberitahuan sederhana, melainkan membawa muatan yang kemudian mengarahkan fungsionalitas tertentu dalam aplikasi jika diklik. Facebook adalah omong kosong. Semua orang tahu ini. Tetapi pemberitahuan FB juga hanya itu, pemberitahuan sederhana (yang hanya muncul di daftar arsip di dalam aplikasi). Mereka tidak fungsional di alam. yaitu tidak ada jenis pemberitahuan FB tertentu yang ketika Anda mengkliknya perlu membuka aplikasi dan mengarahkan Anda ke tempat tertentu.

Ngomong-ngomong... Saya tidak perlu memposting untuk masuk ke diskusi filosofis yang besar (sebenarnya hanya memberi anggukan kepada @heidji untuk ide bagus karena itu akan menangani masalah dalam banyak kasus). Tapi tentunya kita semua bisa sepakat bahwa ini:

Aplikasi Terbuka Android = BEKERJA
Aplikasi Terbuka iOS = BEKERJA
Aplikasi Latar Belakang Android = BEKERJA
Aplikasi Latar Belakang iOS = BEKERJA
Android Cold Boot Dari Aplikasi yang Dimatikan = BEKERJA
iOS Cold Boot Dari Aplikasi yang Dimatikan = TIDAK BEKERJA

...bukan desain plugin yang dimaksud. Jadi ini adalah bug yang belum ditangani oleh pengembang (mungkin karena penyebab kebingungan pada semua utas yang berbeda ini dan orang yang berbeda salah mendiagnosis apa masalahnya), atau sesuatu yang lain seperti variabel yang diteruskan di badan PUSH atau fungsionalitas yang dikompilasi dalam xCode menyebabkan perilaku ini.

Perbaikan bug untuk plugin oleh pengembang selain ... adakah yang bisa mengisolasi perbaikan kode manual untuk ini?

jujur ​​pemberitahuan dari cold boot di iOS berfungsi untuk saya 100%. saya menggunakan plugin webintent hanya untuk Android karena onNotificationOpen tidak berfungsi untuk saya di sana dan webintent tidak ada di iOS.
jika Anda memerlukan spesifik tentang pengaturan saya, beri tahu saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

stephan-nordnes-eriksen picture stephan-nordnes-eriksen  ·  5Komentar

rlz picture rlz  ·  4Komentar

LKruglov picture LKruglov  ·  4Komentar

rolinger picture rolinger  ·  5Komentar

michaelreiser picture michaelreiser  ·  5Komentar