1

解決方案:PhoneGap推送插件獲取應用程序在後臺的數據?

的問題似乎是與火力地堡測試控制檯發送消息,但我不知道爲什麼,但。我開始使用node-gcm發送消息,從一開始,所有事情都按預期工作。

通過設備令牌發送到單個設備的兩個消息。在logcat的消息:

  • 從火力地堡測試控制檯發送(而不是從BG工作):

01-06 14:36:06.618 19422 19422 I chromium: [INFO:CONSOLE(95702)] "{"sound":"default","title":"├üFA fizet├ęs 2016.11.30-a","message":"K├Âvetkez┼Ĺ esed├ękes k├Âtelezetts├ęg: ├üFA fizet├ęs 2016.11.30-a","additionalData":{"id":"1","google.message_id":"0:1483709767111210%********","coldstart":false,"collapse_key":"********","foreground":true}}", source: file:///android_asset/www/build/main.js (95702)

  • 通過節點-GCM腳本發送(甚至從BG工作):

01-06 14:37:41.037 19422 19422 I chromium: [INFO:CONSOLE(95702)] "{"title":"├üFA fizet├ęs 2016.11.30-a","message":"K├Âvetkez┼Ĺ esed├ękes k├Âtelezetts├ęg: ├üFA fizet├ęs 2016.11.30-a","additionalData":{"id":"1","google.message_id":"0:1483709856368443%*********","coldstart":false,"collapse_key":"do_not_collapse","foreground":false}}", source: file:///android_asset/www/build/main.js (95702)

我看到的差異是collapse_key屬性,它包含應用程序和聲音的apk名稱。這可能是由collapse_key造成的嗎?

更新縮短的版本:

  • 設備註冊成功。
  • 從Firebase測試控制檯發送的測試通知。
  • 他們到達的設備:
    • 當應用程序在前臺,通知事件被觸發,因爲它應該是。確定
    • 當應用程序處於後臺時,消息將顯示在操作系統的通知欄上。如果我點擊它,我的應用程序就會被激活,這就是全部。通知事件尚未以此方式調用。 NOT OK

原題:

我使用PhoneGap的-推插件,我不能當應用程序在後臺運行並點擊通知通知觸發的事件Android上的事件。

如果應用程序處於活動狀態,則可以看到在logcat上調用的事件。然而,如果它在後臺,我點擊事件通知,應用程序被激活,根據logcat事件沒有其他事情發生。我曾嘗試在Firebase測試控制檯中添加content-available: 1作爲附加參數,但這也沒有幫助。

這裏是logcat的一排,顯示了當應用程序被激活:

01-05 22:41:59.981 9076 9186 V PushPlugin: extrasToJSON: 
{"sound":"default","title":"Msg title","message":"Msg 
body","additionalData": 
{"id":"1","google.message_id":"0:1483652521531127%d86d9************", 
"coldstart":false,"collapse_key":"************","foreground":true}} 

的代碼是一樣的地方一樣,我立即console.logs回調已被解僱後:

push.on('notification', (data) => { 
    console.log('onNotification'); // not shown when app is in bg 
+0

請嘗試從這裏。 https://github.com/santoshshinde2012/PushNotificationSample –

+0

@SantoshShinde在包括devgirls之前,我已經遵循了許多教程,我可以註冊,發送和捕獲消息。唯一的問題是,當應用程序在後臺時,點擊通知時不會觸發回調。 – Perrier

回答

0

推送插件在後臺發送通知。 在插件文檔中定義了一個事件,它通過收到的通知觸發,嘗試捕獲事件並使用Local Notification插件發送通知。

0

有前景標誌與您可以保持條件的幫助。

push.on('notification', function(data) { 
console.log('onNotification'); 

if(data.additionalData.foreground) {  // if its true app is in foreground 
    console.log('onNotificationForeground'); 
}else{         // else app is in background 
    console.log('onNotificationbackground'); 

    if (data.additionalData.coldstart){ 
      alert("coldstart"); 
    } 
    else{ 
     alert("other than coldstart"); 
    } 
    } 
}); 

隨着前景標記,你可以很容易地知道,應用程序是在前面或背景。

+0

謝謝,但它是前景還是背景,我應該看到logcat上的第一個console.log,對不對?所以無論應用的狀態如何,回調都會被調用。我的問題是我也看不到那條消息。 – Perrier

+0

你能給我你正在使用的推送插件的鏈接嗎? –

+0

https://github.com/phonegap/phonegap-plugin-push – Perrier

0

請改變你的屬性來初始化使用以下方式

 var push = PushNotification.init({ 
      android: { 
       senderID: "12345679", 
       forceShow : true 
      }, 
      browser: { 
       pushServiceURL: 'http://push.api.phonegap.com/v1/push' 
      }, 
      ios: { 
       alert: "true", 
       badge: "true", 
       sound: "true" 
      }, 
      windows: {} 
     }); 

android.forceShow其控制時,應用程序是在前臺通知的行爲的通知插件。

如果true和應用程序是在前臺,它會顯示在通知抽屜裏的通知,該方式時,應用程序在背景相同(與上('notification')回調將只有當用戶點擊該通知的稱呼)。當false和應用處於前臺時,將立即調用('notification')回調。

詳情直視從here插件文檔..

也請看問題從here ...

希望此舉能幫助你!

相關問題